java - 将节点添加到 Java 中以编程方式创建的 JTree

标签 java jtree

我正在创建这个应用程序,它在按钮单击事件上创建选项卡和 JTree。问题是当我尝试将 ne 节点添加到 JTree 时,它​​不会刷新 JTree (或者它不会将节点添加到其中......我真的不知道)。

这是创建选项卡和树的函数:

jTabbedPane1.add(st,jSplitpane10);
int count = jTabbedPane1.getTabCount();
jTabbedPane1.setSelectedIndex(count-1);

DefaultMutableTreeNode root = new DefaultMutableTreeNode("All Notebooks");
DefaultMutableTreeNode notebook1 = new DefaultMutableTreeNode("Notebook 1");
root.add(notebook1);

// Create tree
JTree tree = new JTree(root);
//Create Scroll Pane for the tree
JScrollPane sp = new JScrollPane(tree);

Global.trees.add(tree);

这是应该将新节点“Green”添加到所选选项卡中的树的代码:

int i = jTabbedPane1.getSelectedIndex();
DefaultTreeModel model = (DefaultTreeModel)Global.trees.get(i).getModel();

// Find node to which new node is to be added
int startRow = 0;
String prefix = "J";
TreePath path = Global.trees.get(i).getNextMatch(prefix, startRow, Position.Bias.Forward);
MutableTreeNode node = (MutableTreeNode)path.getLastPathComponent();

// Create new node
MutableTreeNode newNode = new DefaultMutableTreeNode("green");

// Insert new node as last child of node
model.insertNodeInto(newNode, node, node.getChildCount());
model.reload(newNode);

这也是 JTree 全局列表的声明:

public class Global {
    public java.util.List<JTree> trees = new ArrayList<JTree>();
}Global Global;

有什么想法为什么新节点没有显示在树中???

最佳答案

JTree 和 JTable 是最复杂的 Swing 组件。

我认为已重新加载,但未扩展。 JTree根节点有很多设置:处理程序如何显示或不显示根节点等等。

我正在使用调试控制台列表,其中我将模型数据转储为文本(也覆盖节点中的 toString() ),我可以轻松地看到那里有什么,但如果您只有几个不需要的节点,使用 Netbeans 的调试器就足够了。

还尝试伸展树(Splay Tree)中的所有行以使其可见。

你的代码很好:

// Create new node
MutableTreeNode newNode = new DefaultMutableTreeNode("green");

// Insert new node as last child of node
model.insertNodeInto(newNode, node, node.getChildCount());
model.reload(newNode);

但是可能不可见,需要扩展,怎么做,那是另一个问题了

关于java - 将节点添加到 Java 中以编程方式创建的 JTree,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12248157/

相关文章:

java - 关于try catch语句的问题

java - 我是否需要使用 Google 帐户身份验证而不是 Spring 身份验证来避免 Firesheep cookie 嗅探攻击?

java - 嵌套 if 与 if 与双符号?

java - 如何在 JTree 上显示动态更新?/如何刷新或重新加载 JTree?

java - 单击节点时,在另一个组件的 focusLost 之前调用 JTree valueChanged 事件

java - 存储 jtree 的状态/扩展节点以恢复状态

java - 从文本文件中简单读取

java - 斯坦福CoreNLP中如何选择共指消解系统

java - 突出显示 JTree 节点在幕后工作,但不直观

java - 来自 jtree 中 jcheckbox 的多个 ITEM_STATE_CHANGED 事件