Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java的JTable中添加JCombobox有问题吗?_Java_Swing_Jtable_Jcombobox - Fatal编程技术网

在Java的JTable中添加JCombobox有问题吗?

在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

我在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));
数据已添加到表中,但无法再选择最后一列中的组合框。当我单击行但无法选择值时,组合框仍然显示。 请告诉我如何处理这个问题?

永远不要使用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();