初始化JComboBox时移除JTable已添加行,尝试用if语句实现
解决JComboBox初始化时移除JTable旧行的问题
你当前的代码只处理了添加行和重置选中项的逻辑,完全没涉及移除JTable已有行的操作,而且字符串比较用==容易出问题(==比的是对象引用,不是内容),给你调整一下:
首先,清空JTable现有行:用TableModel的setRowCount(0)方法可以直接清空所有行,这是最简便的方式。
然后,正确比较选中项和目标字符串:改用equals()方法做内容比较,避免引用比较的坑。
修改后的代码示例:
// 先清空JTable的所有旧行 model.setRowCount(0); // 用equals比较字符串内容,同时处理null避免空指针 if (itemname != null && itemname.equals(comboBox.getSelectedItem())) { model.addRow(row); } else { comboBox.setSelectedItem("Enter Item"); }
如果是在JComboBox的选中事件(比如ItemListener或ActionListener)里处理,逻辑也是一样:每次选中变化时先清空旧行,再根据条件添加新行,这样就不会有之前的行残留了。
内容的提问来源于stack exchange,提问作者Dan
相关产品推荐
相关产品推荐

