Soalan Awal:
Anda berhasrat untuk memastikan baris nombor dalam JTable yang mengandungi JComboBox dalam sel tertentu apabila ItemEvent dicetuskan dalam JComboBox. Nombor baris ini penting untuk tindakan seterusnya yang melibatkan sel lain dalam baris yang sama selepas pengubahsuaian JComboBox.
Respons:
Nampaknya anda menggunakan JComboBox sebagai editor dalam JTable. Dalam senario sedemikian, kaedah getTableCellEditorComponent() kelas TableCellEditor menyediakan akses kepada baris sebagai salah satu parameternya. Rujuk sumber berikut untuk mendapatkan maklumat lanjut:
Tambahan untuk Penyegerakan Nilai:
Untuk menyegerakkan nilai daripada lajur bergantung dengan lajur JComboBox, ganti kaedah getValueAt() model jadual. Ini membolehkan anda mengembalikan nilai yang dikemas kini berdasarkan kandungan diubah lajur JComboBox.
Contoh Tambahan:
Kod di bawah mempamerkan pendekatan ini, mengekalkan lajur bergantung disegerakkan dengan lajur JComboBox menggunakan kaedah getValueAt() yang diganti:
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); } }
Atas ialah kandungan terperinci Bagaimana untuk Menentukan Baris JTable yang Mengandungi JComboBox yang Mencetuskan ItemEvent?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!