字符串变量到DefaultMutableTreeNode对象?

时间:2009-10-06 09:50:07

标签: java swing casting jtree tree-nodes

是否可以将String变量转换为DefaultMutableTreeNode对象? 请解释。 上下文:

String s = new String(outputTagName);
Object s2 = (Object) s;
DefaultMutableTreeNode selectedNode2 =(DefaultMutableTreeNode) s2;
DefaultMutableTreeNode parent2 =(DefaultMutableTreeNode) parent;
model.insertNodeInto(selectedNode2, parent2, parent2.getChildCount());

这是代码,我写道。这在以BunthFirstSearch方式遍历树的枚举中使用。  并且2nf行给了我这个错误:

java.lang.ClassCastException: java.lang.String cannot be cast to javax.swing.tree.DefaultMutableTreeNode at ....

4 个答案:

答案 0 :(得分:1)

这取决于完全关于您希望使用该节点的树的语义。

例如,您可以创建一个包含字符串的节点,其格式如下:

String s = ...; // your string
new DefaultMutableTreeNode(s);

这对您是否有用取决于您使用树的方式。

基本上,更多上下文。否则,这个简单的“是”答案是你最好的答案。 :-P

答案 1 :(得分:1)

如果我错了,请纠正我,但似乎您想要将所选节点的显示文本更改为某些新的给定文本。如果是这种情况,我认为这可能会有所帮助。

DefaultMutableTreeNode node=(DefaultMutableTreeNode)tree.getLastSelectedPathComponent();
node.setUserObject("New Node Text");

答案 2 :(得分:0)

您不能将String对象转换为String或Object以外的任何类型,或者String实现的接口之一(Serializable,CharSequence,Comparable)。要将对象强制转换为某种类型,对象必须为此类型的。 String对象的类型为String,而不是DefaultMutableTreeNode类型。您甚至无法使DefaultMutableTreeNode成为String的子类(在这种情况下可以进行转换),因为String类是最终的。

答案 3 :(得分:0)

Link that you have provide in your other question

您可以看到您可以执行新的DefaultMutableTreeNode(“Any String”);

要更正代码示例,请执行以下操作:

String s = new String(outputTagName);

DefaultMutableTreeNode selectedNode2 = new DefaultMutableTreeNode(s2);