我有一个实现 TableModel 接口的类。当我在我的 jTable 上调用 setModel 并将我的类设置为模型然后调用jTable.updateUI();
一切都很好。但在某些情况下,我想用不同的结构改变模型。显示数据仍然可以正常工作,但我的列没有更新。有没有办法强制我的表也刷新新模型的列?
问问题
6310 次
4 回答
6
如果数据和结构都发生了变化,模型需要触发相应的事件,例如:fireTableStructureChanged。
http://docs.oracle.com/javase/tutorial/uiswing/components/table.html#fire
于 2012-06-20T12:12:40.780 回答
4
jTable.updateUI();
是 Look and Feel 相关的方法,不要使用那个
我有一个实现 TableModel 接口的类。
您必须为来自的方法覆盖正确的通知器
TableModel
使用
DefaultTableModel
,API中实现了所有通知器,所有更新必须在
EventDispatchThread
于 2012-06-20T12:16:14.357 回答
-1
如果你像我一样只是写一个小技巧,你可以考虑使用 .repaint() 方法,而不是 .updateUI() 方法。
我使用它是因为我不使用 TableModel,但我只是在 Object[][] 中有数据,就像在 sun (well oracle) 教程的第一个示例中一样
于 2013-01-23T08:42:13.910 回答
-1
试试这个(在 setModel(myTableModel); 行之后插入):
myJTable.createDefaultColumnsFromModel();
就我而言,它解决了更新问题,而:.repaint()、.invalidate()、.fireTableDataChanged() 没有帮助。
于 2014-01-22T19:08:00.757 回答