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 중국어 웹사이트의 기타 관련 기사를 참조하세요!