Строковая переменная для объекта DefaultMutableTreeNode? - PullRequest
0 голосов
/ 06 октября 2009

Можно ли преобразовать переменную 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());

Это код, который я написал. Это используется в перечислении, которое пересекает дерево способом BreadthFirstSearch. И строка 2nf дает мне эту ошибку:

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

Ответы [ 4 ]

1 голос
/ 29 сентября 2011

Исправьте меня, если я ошибаюсь, но кажется, что вы хотите изменить отображаемый текст выбранного узла на какой-то новый данный текст. Если это так, я думаю, что это может помочь.

DefaultMutableTreeNode node=(DefaultMutableTreeNode)tree.getLastSelectedPathComponent();
node.setUserObject("New Node Text");
1 голос
/ 06 октября 2009

Это зависит полностью от семантики дерева, с которым вы хотите использовать узел.

Например, вы можете создать узел, содержащий строку, просто:

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

Будет ли это для вас полезным, зависит от того, как вы используете дерево.

В основном, больше контекста, пожалуйста . Иначе этот простой ответ «да» - лучшее, что вы получите. : -Р

0 голосов
/ 06 октября 2009

Ссылка, которую вы указали в своем другом вопросе

Вы видите, что вы можете сделать новый DefaultMutableTreeNode ("Любая строка");

Чтобы исправить пример кода, способ сделать это:

String s = new String(outputTagName);

DefaultMutableTreeNode selectedNode2 = new DefaultMutableTreeNode(s2);
0 голосов
/ 06 октября 2009

Нельзя приводить объект String к любому типу, кроме String или Object, или к одному из интерфейсов, реализуемых String (Serializable, CharSequence, Comparable). Чтобы привести объект к какому-либо типу, объект должен быть этого типа. Объект String имеет тип String, а не тип DefaultMutableTreeNode. Вы даже не можете сделать DefaultMutableTreeNode подклассом String (в этом случае приведение будет возможно), поскольку класс String является окончательным.

...