在Java的JTable中添加JCombobox有问题吗?
我在JTable中添加了一个combobox,添加代码如下:在Java的JTable中添加JCombobox有问题吗?,java,swing,jtable,jcombobox,Java,Swing,Jtable,Jcombobox,我在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("Hobb
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));
数据已添加到表中,但无法再选择最后一列中的组合框。当我单击行但无法选择值时,组合框仍然显示。
请告诉我如何处理这个问题?永远不要使用updateUI()方法。阅读API以了解此方法的实际功能。它与更改模型中的数据无关
JTable已经支持组合框编辑器,因此无需创建自定义MyComboBoxEditor。阅读JTable API并按照Swing教程“如何使用表”的链接,以获得使用组合框作为编辑器的工作示例。我猜我们无法根据未显示的代码解决您的问题,您也无法发布所有代码。最好创建一个小的可编译和可运行的程序,我们可以测试和修改它,并演示您的问题,至少,您必须向我们展示MyComboxeditor的代码,这可能是问题的根源。此外,您不应该直接将新行添加到
数据
向量中,而是使用tblModel.addRow()
自动触发UI更新。顺便说一句,updateUI()不是用来刷新表的,而是用来更改表的LAF,因此您不应该使用它。我们已经根据您的问题为您提供了所有帮助。在您发布SSCCE之前,我们将无法提供任何其他帮助。
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();