Java getUserObject () возвращает строку вместо userobject - PullRequest
0 голосов
/ 01 октября 2018

После того, как я создал узел, я хотел бы получить MyNodeUserObject, чтобы я мог позже вызвать метод getFlops ().Но я не могу привести userobject к MyNodeUserObject.

Создание узла:

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 (true / false); Родитель; Флопс
мои диапазоны; true;;
a; false; мои диапазоны; AA, AKs, AKo
b; false; мои диапазоны; 66,55,44,33,22
c; false; мои диапазоны; JJ, TT, 99, 88

1 Ответ

0 голосов
/ 01 октября 2018

Глядя на код, который вы указали в комментарии, корневой узел вашего дерева на самом деле содержит String (" Диапазоны ") в качестве userObject.

Учитывая, что вы можете задать следующие параметры:

  • Заменить корневой узел узлом вокруг MyNodeUserObject;это, вероятно, требует некоторых изменений в этом классе для правильной обработки корневого узла
  • Добавьте специальный случай в методе visitAllNodes (например, проверка на instanceof MyNodeUserObject)
  • Убедитесь, что visitAllNodes не вызывается с корневым узлом
...