Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.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中留下空白_Java_Swing_Arraylist_Jtable - Fatal编程技术网

Java 数组列表。删除函数不会完全删除元素,在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

我正在JTable中显示数组列表。 我有一个非常简单的删除方法:

@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来实现这一点。