gpt4 book ai didi

java - 更新渲染的树单元

转载 作者:行者123 更新时间:2023-12-02 05:58:53 31 4
gpt4 key购买 nike

这是我的申请。

enter image description here

我想要做的是,当用户的详细信息更新时,它在 JTree 中的节点也会更新。这可能吗;即使 JTree 及其渲染单元已经创建?

我需要一个更新渲染单元格的示例,即使它已经被创建。

这是我的查看代码:

void createTree() {

rootNode = new DefaultMutableTreeNode("users");

for (User user : listOfUsers) {

String id = user.getId();
File file = new File(id);
DefaultMutableTreeNode node = new DefaultMutableTreeNode(file);
rootNode.add(node);
}

treeModel = new DefaultTreeModel(rootNode);
tree = new JTree(rootNode);
}

void addTreeModelListener(TreeModelListener a) {

treeModel.addTreeModelListener(a);
}

void repaintTree() {

treeModel.reload();
tree.revalidate();
tree.repaint();
}

这是我的 Controller 代码:

view.addTreeModelListener(new MyTreeModelListener());

class MyTreeModelListener implements TreeModelListener {
public void treeNodesChanged(TreeModelEvent e) {

DefaultMutableTreeNode node;
node = (DefaultMutableTreeNode)(e.getTreePath().getLastPathComponent());

int index = e.getChildIndices()[0];
node = (DefaultMutableTreeNode)(node.getChildAt(index));

System.out.println("The user has finished editing the node.");
System.out.println("New value: " + node.getUserObject());
}

public void treeNodesInserted(TreeModelEvent e) {}
public void treeNodesRemoved(TreeModelEvent e) {}
public void treeStructureChanged(TreeModelEvent e) {}
}

这个想法是在对对象进行更改后,我调用 repaintTree() 方法。现在查看代码后,我认为问题在于我正在更改对象详细信息而不是节点详细信息,但这只是一种预感。

请尽快回复,非常感谢。

最佳答案

Swing 采用 MVC 架构。

因此树中包含的数据和渲染逻辑是完全解耦和独立的。

您可以简单地更改树的内容,而不必担心使用此 Oracle Tutorial 。只是不要忘记在更新后调用 revalidate()repaint() 方法。

祝你好运。

关于java - 更新渲染的树单元,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22841559/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com