Java 数组列表。删除函数不会完全删除元素,在JTable中留下空白
我正在JTable中显示数组列表。 我有一个非常简单的删除方法:Java 数组列表。删除函数不会完全删除元素,在JTable中留下空白,java,swing,arraylist,jtable,Java,Swing,Arraylist,Jtable,我正在JTable中显示数组列表。 我有一个非常简单的删除方法: @Override public void DeleteContact(int id) { Database c = GetSingleContact(id); contactsList.remove(c); 然后将其保存到文件中 所有操作都正常,但当我删除一个元素时,它会在JTable中留下一个填充有0的空白,我无法删除它,大小计算方法仍然将其计为元素,其他元素不会重新编号(从技术上讲,arraylist.re
@Override
public void DeleteContact(int id) {
Database c = GetSingleContact(id);
contactsList.remove(c);
然后将其保存到文件中
所有操作都正常,但当我删除一个元素时,它会在JTable中留下一个填充有0的空白,我无法删除它,大小计算方法仍然将其计为元素,其他元素不会重新编号(从技术上讲,arraylist.remove(x)应该会自动执行)
(从技术上讲,arraylist.remove(x)应自动执行此操作)
不,不应该
JTable使用TableModel保存数据。对数据的任何更改都需要在TableModel上完成。然后,TableModel将通知表重新绘制自身
如果ArrayList用作TableModel的数据存储,则在deleteContact()
方法中,需要调用:
fireTableRowsDeleted( ...);
自定义TableModel的方法
请参阅:有关如何为自定义对象创建自定义TableModel的分步示例。“我不确定如何处理它,这些错误非常罕见”与问题无关。请检查,然后尝试更清楚地发布注意,在Java中方法名称通常以小写字母开头。我的方法用simple for循环填充JTable,如果删除了某些内容,它仍然会检测到它,并只填充0。我需要在循环中绕过它,或者在移除方法中对它重新编号。但是谢谢你的帮助,它可能会有用。好的,我已经修好了。但现在当我移除元素5时,最后一个元素不再显示。几乎所有的JTable都会自动删除一行,认为不再需要它,但不幸的是,当我删除一行时,它会减少两行。如何迫使它停止?我打赌我必须编辑TableModel。
我打赌我必须编辑TableModel
-这正是我在回答中所说的,我向您展示了如何创建一个定制的TableModel来实现这一点。