Java getUserObject()返回字符串而不是userobject
创建一个节点后,我希望得到一个MyNodeUserObject,以便稍后调用getFlops()方法。但是我不能将userobject强制转换为MyNodeUserObject 创建节点:Java getUserObject()返回字符串而不是userobject,java,jtree,Java,Jtree,创建一个节点后,我希望得到一个MyNodeUserObject,以便稍后调用getFlops()方法。但是我不能将userobject强制转换为MyNodeUserObject 创建节点: MyNodeUserObject userObject = new MyNodeUserObject("aaa","AA-10"); DefaultMutableTreeNode node = new DefaultMutableTreeNode(userObject); public static v
MyNodeUserObject userObject = new MyNodeUserObject("aaa","AA-10");
DefaultMutableTreeNode node = new DefaultMutableTreeNode(userObject);
public static void visitAllNodes(DefaultMutableTreeNode node, JTree tree) {
//java.lang.ClassCastException: java.lang.String cannot be cast to MyNodeUserObject
MyNodeUserObject nodeInfo = (MyNodeUserObject) node.getUserObject();
MyNodeUserObject.class
public final class MyNodeUserObject{
private static final long serialVersionUID = 1L;
private final String flops;
private final String nodeName;
public MyNodeUserObject(String nodeName, String flops) {
this.flops = flops;
this.nodeName = nodeName;
}
public String getFlops() {
return flops;
}
public String getNodeName() {
return nodeName;
}
@Override
public String toString() {
return nodeName;
}
tree.txt的内容:节点名称;IsFolder(真/假);父母亲翻牌
我的范围;是的
A.虚假的;我的范围;AA,AKs,AKo
B虚假的;我的范围;66,55,44,33,22
C虚假的;我的范围;JJ,TT,99,88
查看您在注释中链接的代码,树的根节点实际上包含一个
字符串(“范围”)作为其用户对象
鉴于此,你的选择是
- 将根节点替换为
MyNodeUserObject
周围的节点;这可能需要对该类进行一些更改以正确处理根节点
- 在
visitAllNodes
方法中添加一个特殊情况(例如,检查MyNodeUserObject的实例)
- 确保根节点未调用
visitAllNodes
查看您在注释中链接的代码,树的根节点实际上包含一个字符串(“范围”)作为其用户对象
鉴于此,你的选择是
- 将根节点替换为
MyNodeUserObject
周围的节点;这可能需要对该类进行一些更改以正确处理根节点
- 在
visitAllNodes
方法中添加一个特殊情况(例如,检查MyNodeUserObject的实例)
- 确保根节点未调用
visitAllNodes
请使用编辑框编辑您的问题。您确定这是同一个DefaultMutableTreeNode
实例,并且其间没有其他调用setUserObject
?如何构建树?你能给我们看一下代码吗?这棵树是由一个txt文件构建的。以下是完整的代码:https://paste.ofcode.org/9qnfluqayyry79ksz2u7ij请用。您确定这是同一个DefaultMutableTreeNode
实例,并且其间没有其他调用setUserObject
?如何构建树?你能给我们看一下代码吗?这棵树是由一个txt文件构建的。以下是完整代码:https://paste.ofcode.org/9QnFLUQayyRY79ksz2u7ij