最初の質問:
行を確認することが目的です。 ItemEvent がトリガーされたときに、特定のセル内の JComboBox を含む JTable 内の番号JComboBox。この行番号は、JComboBox の変更後に同じ行内の別のセルが関与する後続のアクションにとって重要です。
応答:
JComboBox を次のように利用しているようです。 JTable 内のエディタ。このようなシナリオでは、TableCellEditor クラスの getTableCellEditorComponent() メソッドにより、パラメーターの 1 つとして行へのアクセスが提供されます。詳細については、次のリソースを参照してください。
値の同期に関する補足:
へ依存列の値を 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 中国語 Web サイトの他の関連記事を参照してください。