当单元格中的JComboBox中有一个ItemEvent时,如何获得CellRow我有一个包含JComboBox列的JTable。我在JComboBox上附加了一个ItemListener,它可以处理任何更改。但是,ItemListener没有获得已更改的ComboBox所在的行的方法。我需要行号,以便在ComboBox有更改时对同一行中的另一列执行操作。任何帮助都将不胜感激。这是我的简短代码。我想要完成的是,当一个项目侦听器接收到一个更改时,获得ComboBox的TableRow。import java.awt.*;import java.awt.event.ItemEvent;import java.awt.event.ItemListener;import java.io.IOException;import javax.swing.*;
import javax.swing.table.DefaultTableModel;import javax.swing.table.TableCellRenderer;import javax.swing.table.TableColumn;
public class Example extends JFrame {
private static final long serialVersionUID = 1L;
public static int maxX, maxY;
public static final String[] columnHeads = {"Col 1", "Col 2", "Col 3"};
public static void main(String args[]) throws IOException {
Example example = new Example();
}
public Example() {
//Create Table Model
DefaultTableModel model = new DefaultTableModel();
for (int index = 0; index < columnHeads.length; index++) {
model.addColumn(columnHeads[index]);
}
//Create Table
JTable table = new JTable(model);
JScrollPane scrollPane = new JScrollPane(table);
//List for ComboBox
String[] list = {"Item1", "Item2", "Item3"};
//Create ComboBox
JComboBox itemTypes = attachComboBoxRenderer(table, 2, list);
//Attach Item Listener
itemTypes.addItemListener(new ComboBoxListener());
((DefaultTableModel) table.getModel()).insertRow(
table.getRowCount(), new Object[]{"C1", "C2", ""});
this.setTitle("Example");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container container = getContentPane();
//MAIN Panel
final JPanel main = new JPanel();
main.setLayout(new GridBagLayout());
main.add(scrollPane);
container.add(main);
this.pack();
this.setVisible(true);
}
添加回答
举报
0/150
提交
取消