1

当底层模型发生变化时,我无法找出重绘 JxTreeTable 的最佳方法。

对于表中的每个节点,我都有一个相应的模型对象,所以如果模型发生变化,我可以获得 Node.js。

此后,给定一个节点,如何在表上触发重绘/更改事件以强制它重绘。欢迎提供线索,对细节的轻描淡写表示歉意,我没有太多可以通过代码展示的内容。

4

6 回答 6

4

我最终这样做了:

            TreeTableNode parent = node.getParent();
            modelSupport.firePathChanged(new TreePath(getPathToRoot(parent)));

该代码在我的模型中调用,该模型扩展了 DefaultTreeTableModel。

node是包含已更改模型的 AbstractMutableTreeTableNode。

于 2012-03-30T14:43:32.207 回答
3

如果您的模型触发正确的事件,它会自动工作,类似于标准JTreeJTable.

有一个标准的例子JTree出现在Swing tutorial

于 2012-03-27T20:58:49.980 回答
1

你可以试试这个:

yourJxTreeTable.getTreeTableModel.fireTableRowsUpdated(firstRow, lastRow)

我认为它会起作用。

于 2012-03-28T07:23:33.400 回答
0

DefaultTreeTableModel 包含可用于触发事件的modelSupport字段。对于您的情况,您可以在模型中使用以下代码:

modelSupport.fireNewRoot(); 
于 2015-08-09T11:45:22.550 回答
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();
}

就这样!:)

于 2017-02-06T13:53:47.133 回答
-1

很简单,调用 JXTreeTable.updateUI();

于 2015-06-18T12:14:59.567 回答