Anfangsfrage:
Sie möchten die Zeile ermitteln Zahl innerhalb einer JTable, die eine JComboBox in einer bestimmten Zelle enthält, wenn ein ItemEvent in der JComboBox ausgelöst wird. Diese Zeilennummer ist entscheidend für nachfolgende Aktionen, die eine andere Zelle in derselben Zeile nach der JComboBox-Änderung betreffen.
Antwort:
Es scheint, dass Sie eine JComboBox als verwenden ein Editor innerhalb der JTable. In solchen Szenarios bietet die Methode getTableCellEditorComponent() der TableCellEditor-Klasse Zugriff auf die Zeile als einen ihrer Parameter. Weitere Einblicke finden Sie in den folgenden Ressourcen:
Nachtrag zur Wertesynchronisierung:
Um den Wert einer abhängigen Spalte mit dem der zu synchronisieren JComboBox-Spalte, überschreiben Sie die getValueAt()-Methode des Tabellenmodells. Dadurch können Sie den aktualisierten Wert basierend auf dem geänderten Inhalt der JComboBox-Spalte zurückgeben.
Zusätzliches Beispiel:
Der folgende Code veranschaulicht diesen Ansatz, wobei eine abhängige Spalte beibehalten wird synchronisiert mit der JComboBox-Spalte mithilfe der überschriebenen getValueAt()-Methode:
import javax.swing.*; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableColumn; public class Example { private static final int DEPENDENT_COL = 1; private static final int ITEM_COL = 2; private static final String[] columnNames = {"Col 1", "Col 2", "Col 3"}; public static void main(String[] args) { // Create table model DefaultTableModel model = new DefaultTableModel(columnNames, 0) { @Override public Object getValueAt(int row, int col) { if (col == DEPENDENT_COL) { return "C2:" + this.getValueAt(row, ITEM_COL); } else { return super.getValueAt(row, col); } } }; // Add rows to table model for (int i = 0; i < 16; i++) { model.addRow(new Object[] {"C1", "C2", "Item1"}); } // Create table and customize JComboBox column JTable table = new JTable(model); TableColumn col = table.getColumnModel().getColumn(ITEM_COL); String[] items = {"Item1", "Item2", "Item3"}; JComboBox combo = new JComboBox(items); col.setCellEditor(new DefaultCellEditor(combo)); // Create the frame and add the table JFrame frame = new JFrame(); frame.add(new JScrollPane(table)); frame.pack(); frame.setVisible(true); } }
Das obige ist der detaillierte Inhalt vonWie ermittelt man die JTable-Zeile, die eine JComboBox enthält, die ein ItemEvent ausgelöst hat?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!