我有一个实现TableModel接口的类。
当我在我的jTable上调用setModel并将我的类设置为模型然后调用jTable.updateUI();
时一切都很好。
但在某些情况下,我想用不同的结构更改模型。显示数据仍然可以正常工作但我的列不会更新。有没有办法强制我的表也刷新新模型的列?
答案 0 :(得分:6)
模型需要触发相应的事件,例如:fireTableStructureChanged,如果数据和结构都发生了变化。
http://docs.oracle.com/javase/tutorial/uiswing/components/table.html#fire
答案 1 :(得分:4)
jTable.updateUI();
是外观和感觉相关的方法,不要使用我有一个实现TableModel接口的类。
you have to override right notifiers了解TableModel
使用DefaultTableModel
,API中已实现所有通知程序,
所有更新必须在EventDispatchThread
答案 2 :(得分:-1)
如果像我一样你只是在写一个小黑客,你可以考虑使用.repaint()方法,而不是.updateUI()方法。
我之所以使用它,是因为我没有使用TableModel,但我只是在Object [] []中有数据,就像在sun(oracle)教程的第一个例子中那样
答案 3 :(得分:-1)
试试这个(在setModel(myTableModel); line之后插入):
myJTable.createDefaultColumnsFromModel();
在我的情况下,它解决了更新问题,而:.repaint(),. invalidate(),. fireTableDataChanged()没有帮助。