初始問題:
您的目標是確定該行當在特定儲存格中觸發ItemEvent 時,JTable 中包含JComboBox 的編號JComboBox。此行號對於 JComboBox 修改後涉及同一行中的另一個儲存格的後續操作至關重要。
回應:
看來您正在使用 JComboBox 作為JTable 中的編輯器。在這種情況下,TableCellEditor 類別的 getTableCellEditorComponent() 方法提供對行的存取作為其參數之一。請參閱以下資源以取得更多見解:
值同步附錄:
同步值與JComboBox列相關的列,重寫表格模型的 getValueAt() 方法。這允許您根據 JComboBox 列的變更內容傳回更新的值。
其他範例:
下面的程式碼展示了這個方法,保留了依賴列使用重寫的getValueAt() 方法與JComboBox 欄位同步:
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); } }
以上是如何確定包含觸發 ItemEvent 的 JComboBox 的 JTable 行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!