当底层模型发生变化时,我无法找到重绘JxTreeTable的最佳方法。
对于表中的每个节点,我都有一个相应的模型对象,因此如果模型发生变化,我可以得到节点。
此后,给定一个Node,如何在表上触发重绘/更改事件以强制重绘。欢迎提供线索,对细节表示道歉,我没有太多的代码表示。
答案 0 :(得分:4)
我最终这样做了:
TreeTableNode parent = node.getParent();
modelSupport.firePathChanged(new TreePath(getPathToRoot(parent)));
代码在我的模型中调用,扩展了DefaultTreeTableModel。
node
是包含已更改模型的AbstractMutableTreeTableNode。
答案 1 :(得分:3)
答案 2 :(得分:1)
你可以试试这个:
yourJxTreeTable.getTreeTableModel.fireTableRowsUpdated(firstRow, lastRow)
我认为它会起作用。
答案 3 :(得分:0)
DefaultTreeTableModel包含 modelSupport 字段,您可以使用该字段触发事件。对于您的情况,您可以在模型中使用以下代码:
modelSupport.fireNewRoot();
答案 4 :(得分:0)
updateUI()方法也适用于我!
我的模型实现了TreeTableModel,我有一个TreeModelSupport对象。
当我添加/删除节点时,我触发了modelSupport.fireChildXXX方法:
public void insertNodeInto(MutableTreeTableNode newChild, MutableTreeTableNode parent, int index) {
modelSupport.fireChildAdded(new TreePath(getPathToRoot(parent)), index, newChild);
}
我将TreeModelListener添加到modelSupport对象并覆盖treeStructureChanged方法:
public void treeStructureChanged(TreeModelEvent e) {
m.notifyChanges();
}
我的notifyChanges方法喜欢这个:
public void notifyChanges()
{
treeTable.updateUI();
}
这就是全部! :)
答案 5 :(得分:-1)
简单,调用JXTreeTable.updateUI();