Heim >Java >javaLernprogramm >Wie rufe ich den Zeilenindex einer JComboBox innerhalb einer JTable-Zelle während eines ItemEvents ab?
So erhalten Sie die Zellenzeile einer JComboBox in einer JTable-Zelle während eines ItemEvents
Bei Verwendung einer JComboBox als Zelleneditor in einer JTable , kann es schwierig sein, während eines ItemEvents die mit der geänderten JComboBox verknüpfte Zeile abzurufen. Diese Informationen sind entscheidend für den Zugriff auf andere Spalten in derselben Zeile, wenn eine Aktualisierung basierend auf der Änderung der JComboBox erfolgt.
Lösung:
Der Schlüssel zur Lösung dieses Problems besteht darin, das zu verstehen Die überschriebene Methode des TableCellEditors, getTableCellEditorComponent(), schließt die Zeile als Parameter ein. Nachfolgend finden Sie eine Lösung, die dies nutzt:
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); } }
Mit dieser Lösung können Sie auf die Zeile der JComboBox im ItemListener zugreifen und so bei Bedarf Informationen aus anderen Spalten in derselben Zeile aktualisieren oder abrufen.
Das obige ist der detaillierte Inhalt vonWie rufe ich den Zeilenindex einer JComboBox innerhalb einer JTable-Zelle während eines ItemEvents ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!