Comment obtenir la ligne de cellules d'une JComboBox dans une cellule JTable pendant un événement ItemEvent
Lors de l'utilisation d'une JComboBox comme éditeur de cellule dans une JTable , il peut être difficile d'obtenir la ligne associée au JComboBox modifié lors d'un ItemEvent. Ces informations sont cruciales pour accéder aux autres colonnes de la même ligne lors de la mise à jour en fonction du changement de JComboBox.
Solution :
La clé pour résoudre ce problème est de comprendre que la méthode remplacée de TableCellEditor, getTableCellEditorComponent(), inclut la ligne en tant que paramètre. Vous trouverez ci-dessous une solution qui exploite cela :
import java.awt.*; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import javax.swing.*; import javax.swing.table.DefaultTableModel; public class JComboBoxCellRowAccess { public static void main(String[] args) { JTable table = createTable(); JComboBox<String> comboBox = new JComboBox<>(new String[] { "Item1", "Item2", "Item3" }); TableColumn column = table.getColumnModel().getColumn(1); column.setCellEditor(new DefaultCellEditor(comboBox)); comboBox.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { int row = getCellRow(comboBox); System.out.println("Row: " + row); } }); } public static int getCellRow(JComboBox<?> comboBox) { TableCellEditor editor = comboBox.getCellEditor(); if (editor != null) { Component component = editor.getTableCellEditorComponent(null, null, true, -1, -1); return ((JTable) component.getParent()).getSelectedRow(); } return -1; } public static JTable createTable() { DefaultTableModel model = new DefaultTableModel(new Object[][] { { "Row 0" }, { "Row 1" }, { "Row 2" } }, new String[] { "Column 1" }); return new JTable(model); } }
Avec cette solution, vous pouvez accéder à la ligne du JComboBox dans ItemListener, vous permettant de mettre à jour ou de récupérer des informations d'autres colonnes de la même ligne selon vos besoins.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!