【发布时间】:2011-05-20 02:23:59
【问题描述】:
我在一个JTable中添加了一个combobox,添加代码如下:
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();
数据已添加到表中,但无法再选择最后一列中的组合框。当我单击该行但无法选择值时,仍然显示组合框。 请问我该如何处理这个问题?
【问题讨论】:
-
我猜我们将无法根据未显示的代码找出您的问题,并且您无法发布所有代码。最好创建一个可编译和可运行的小型程序,我们可以测试和修改它并演示您的问题,sscce
-
至少,您必须向我们展示 MyComboBoxEditor 的代码,这可能是问题的根源。此外,您不应直接将新行添加到您的
dataVector,而应使用tblModel.addRow(),它会自动触发 UI 更新。顺便说一句,updateUI() 不是用于刷新表,而是更改其 LAF,因此您应该永远使用它.. -
我们已根据您的问题为您提供了所有帮助。在您发布 SSCCE 之前,我们将无法提供任何其他帮助。
标签: java swing jtable jcombobox