Java 如何将TreeNode添加到使用默认构造函数构造的JTree中?

Java 如何将TreeNode添加到使用默认构造函数构造的JTree中?,java,swing,Java,Swing,我试图将DefaultMutableTreeNode添加到JTree,但我不知道如何使用默认的JTree构造函数来实现这一点 final JTree tree = new JTree(); final DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root"); ... 我错过了什么?我希望在不使用JTree(TreeNode)构造函数的情况下实现这一点。使用接受TreeNode对象并传入DefaultMutableTre

我试图将
DefaultMutableTreeNode
添加到
JTree
,但我不知道如何使用默认的
JTree
构造函数来实现这一点

final JTree tree = new JTree();
final DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root");

...

我错过了什么?我希望在不使用
JTree(TreeNode)
构造函数的情况下实现这一点。

使用接受TreeNode对象并传入DefaultMutableTreeNode对象的JTree构造函数。DefaultMutableTreeNode类允许添加或删除节点,而不是JTree类。API将向您展示这一点。根据jtreeapi,您正在使用的构造函数
newjtree()创建一个带有“示例”模型的JTree对象——为什么要这样做

final JTree tree = new JTree();
final DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root");

...
如果您坚持自己的做事方式,可以从JTree获取TreeModel,转换为DefaultTreeModel,然后调用其
setRoot(…)
方法。但这确实会给铸造带来一些风险,在铸造之前,您需要先进行测试以确保模型是正确的类型

final JTree tree = new JTree();
TreeModel model = tree.getModel();
if (model instanceof DefaultTreeModel) {
    DefaultTreeModel treeModel = (DefaultTreeModel) tree.getModel();
    DefaultMutableTreeNode root = new DefaultMutableTreeNode("root");
    treeModel.setRoot(root);
}

final Tree=newjtree()这个编译吗?JTree不会从树扩展使用接受树节点的构造函数,然后向该节点添加节点,并阅读和JTree的API以及DefaultMuchButtgetting了解详细信息。@DontKnowmuchButtingBetter当然这是最终的
JTree tree=new JTree()
,我只是打字太快了。不,我不想使用JTree(TreeNode)
构造函数。
“不,我不想使用JTree(TreeNode)构造函数”
——但为什么?您似乎在问--“如何创建一个允许添加节点的树,但我只想使用一个创建一个不灵活的不可变树的构造函数”。构造器在那里有一个很好的理由——使用它!