【问题标题】:Array List .remove function does not remove element entirely, leaving empty spaces in JTableArray List .remove 函数不会完全删除元素,在 JTable 中留下空格
【发布时间】:2019-06-04 19:08:07
【问题描述】:

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

@Override
public void DeleteContact(int id) {
    Database c = GetSingleContact(id);
    contactsList.remove(c);

然后将其保存到文件中。

一切正常,但是当我删除一个元素时,它会在 JTable 中留下填充为 0 的空白空间,我无法摆脱它,大小计算方法仍将其视为元素,并且其他元素不会重新编号(技术上是 arraylist.remove (x) 应该自动执行)。

【问题讨论】:

标签: java swing arraylist jtable


【解决方案1】:

(从技术上讲,arraylist.remove(x) 应该自动完成)。

不应该。

JTable 使用 TableModel 来保存数据。对数据的任何更改都需要在 TableModel 上完成。然后,TableModel 将通知表格重新绘制自己。

如果 ArrayList 用作 TableModel 的数据存储,那么在 deleteContact() 方法中您需要调用:

 fireTableRowsDeleted( ...);

自定义 TableModel 的方法。

有关如何为自定义对象创建自定义 TableModel 的分步示例,请参阅:Row Table Model

【讨论】:

  • 好的,我知道我的问题是什么。我的方法用简单的 for 循环填充 JTable,如果删除了某些内容,它仍然会检测到它并填充为 0。我需要以某种方式在循环中绕过它,或者只是在删除方法中重新编号。但是感谢您的帮助,它可能会有用。
  • 好的,我已经修好了。但是现在当我删除时,比如说元素 5,最后一个元素不再显示。几乎 JTable 会自动删除一行,认为不再需要它,但不幸的是,当我删除一行时,它会导致少两行。如何强制它停止?我敢打赌我必须编辑 TableModel。
  • I bet i have to edit TableModel - 这正是我在回答中所说的,我向您展示了如何创建一个完全可以做到这一点的自定义 TableModel。
猜你喜欢
  • 2012-05-03
  • 1970-01-01
  • 1970-01-01
  • 2017-06-15
  • 2015-06-15
  • 1970-01-01
  • 2016-07-07
  • 2011-05-14
相关资源
最近更新 更多