繁体   English   中英

JTable数据刷新问题

[英]JTable Data Refresh Issue

我想通过单击按钮刷新JTable数据。

问题是JTable中的旧数据无法删除,新数据只是添加到表中。 我尝试了以下方法来删除旧数据,但没有一个工作。

1. table.setModel(new DefaultTableModel());
2. ((DefaultTableModel)table.getModel()).setRowCount(0);
3. ((DefaultTableModel)table.getModel()).fireTableDataChanged();
4. ((DefaultTableModel)table.getModel()).getDataVector().removeAllElements();
5. table.repaint();
6. model = (DefaultTableModel)table.getModel();
   while(model.getRowCount() > 0) {
       model.removeRow(0);
   }

拥有JTable的刷新按钮是非常可疑的。 这让我觉得你没有正确添加数据,因为每次添加或删除数据时,JTable都应刷新。

使用DefaultTableModel时,我会验证一些事情:

  1. 确保仅使用addRow添加数据
  2. 只应使用insertRow插入数据
  3. 使用removeRow删除数据

切勿直接修改内部向量。 它不会导致事件触发,而且你会遇到刷新按钮。 我不知道为什么他们甚至暴露它。 JavaDocs至少应该特别警告这一点。

如果所有其他方法都失败了,请启动调试器,看看会发生什么。

您可以在此处使用更多代码。 很难确切地告诉你在哪里调用这些方法和顺序。 如果您更改模型然后调用fireTableDataChanged()它应该工作....假设您已更新正确的TableModel。 有一个很好的Java教程来使用表: http//docs.oracle.com/javase/tutorial/uiswing/components/table.html

我自己也有同样的问题,但我的解决方案却有所不同。 检查几乎所有内容后,我通过控制台检查了表的内容,发现内容确实正在更新。 但是,更新未反映在屏幕上可见的表格上。

实际上,这段代码:

model = (DefaultTableModel)table.getModel();


while(model.getRowCount() > 0) {
       model.removeRow(0);
   }

不仅删除了行,还删除了表。

我的解决方案是从表单中删除表,然后在表数据更改时重新添加它。

在我的情况下看来,我的编码生成表没有任何问题,但布局管理器不喜欢覆盖或更新组件,我希望它放在那里的区域。

一些奇怪的事情发生了,但在一天结束时,这对我有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM