我在JTable中添加了一个组合框,添加代码如下:
Vector<String> header = new Vector<String>();
Vector data = new Vector();
String[] h = new String[]{"Music", "Movie", "Sport"};
header.add("Code");
header.add("Name");
header.add("Salary");
header.add("Hobby");
loadData(); // Add some data to the table
DefaultTableModel tblModel;
tblModel = (DefaultTableModel) this.tblEmp.getModel();
tblModel.setDataVector(data, header);
// Adding combobox to the last column
TableColumn hobbyColumn = tblEmp.getColumnModel().getColumn(3);
hobbyColumn.setCellEditor(new MyComboBoxEditor(h));
在我使用代码动态地向表中添加新行之前,一切正常:
Vector v = new Vector();
v.add("E333");
v.add("Peter");
v.add(343);
v.add(""); // This last colum is the combobox so I put it as ""
data.add(v);
tblEmp.updateUI();
数据已添加到表中,但无法再选择最后一列中的组合框。单击行但仍无法选择值时,仍会显示组合框。 我该怎么处理这个问题?
答案 0 :(得分:2)
永远不要使用updateUI()方法。阅读API以了解此方法实际执行的操作。它与更改模型中的数据无关。
JTable已经支持组合框编辑器,因此无需创建自定义MyComboBoxEditor。阅读JTable API并按照“如何使用表”的Swing教程的链接,获取使用组合框作为编辑器的工作示例。