ItemEvent 中に JTable セル内の JComboBox のセル行を取得する方法
JTable のセル エディタとして JComboBox を使用する場合の場合、ItemEvent 中に変更された JComboBox に関連付けられた行を取得するのが難しい場合があります。この情報は、JComboBox の変更に基づいて更新するときに、同じ行内の他の列にアクセスするために重要です。
解決策:
この問題を解決する鍵は、次のことを理解することです。 TableCellEditor のオーバーライドされたメソッド getTableCellEditorComponent() には、行がパラメーターとして含まれます。以下は、これを活用したソリューションです。
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); } }
このソリューションを使用すると、ItemListener 内の JComboBox の行にアクセスでき、必要に応じて同じ行内の他の列から情報を更新または取得できます。
以上がitemEvent中にJTableセル内のJComboBoxの行インデックスを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。