Cara Mendapatkan Baris Sel JComboBox dalam Sel JTable Semasa ItemEvent
Apabila menggunakan JComboBox sebagai editor sel dalam JTable , mungkin sukar untuk mendapatkan baris yang dikaitkan dengan JComboBox yang diubah semasa ItemEvent. Maklumat ini penting untuk mengakses lajur lain dalam baris yang sama apabila mengemas kini berdasarkan perubahan JComboBox.
Penyelesaian:
Kunci untuk menyelesaikan isu ini ialah memahami bahawa kaedah ganti TableCellEditor, getTableCellEditorComponent(), termasuk baris sebagai parameter. Di bawah ialah penyelesaian yang memanfaatkan perkara ini:
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); } }
Dengan penyelesaian ini, anda boleh mengakses baris JComboBox dalam ItemListener, membolehkan anda mengemas kini atau mendapatkan maklumat daripada lajur lain dalam baris yang sama seperti yang diperlukan.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Indeks Baris JComboBox Dalam Sel JTable Semasa ItemEvent?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!