powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / (JTree) Отображение дерева XML-документа.
5 сообщений из 5, страница 1 из 1
(JTree) Отображение дерева XML-документа.
    #34268255
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Моё дерево должно показывать структуру XML-файла.
Я решил что раз XML и так древовидный, то модель должна просто кидать ноды в ответ на запрос дерева. А чтобы ноды рисовались не целиком, а отображалось только TagName, или тип элемента (для элементов которые тега не имеют) переопределил рисовальщик DefaultTreeCellRenderer.

Всё красиво, но когда встала задача обработки выбора элемента полезли ошибки. Вот код обработчика:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
 private   class  XMLTreeSelectionListener  implements  TreeSelectionListener{
	 public   void  valueChanged(TreeSelectionEvent event){
	    TreePath path = xmlTree.getSelectionPath();
	    System.out.println(path);
	     if  (path ==  null ){
		 return ;
	    }
	    System.out.println( 1 );
	    DefaultMutableTreeNode treeNode = (DefaultMutableTreeNode)path.getLastPathComponent();
	    System.out.println( 2 );
	    Node node = (Node)treeNode.getUserObject();
	    System.out.println(node);
	}
    }
Это внутренний класс. Ошибки лезут тут: DefaultMutableTreeNode treeNode = (DefaultMutableTreeNode)path.getLastPathComponent();
Может ли это быть вызванно тем, что в путе к ноде указывается весь XML?

Подскажите, как проблему решить?

Код: plaintext
ROLLBACK;


Код: plaintext
ROLLBACK;
...
Рейтинг: 0 / 0
(JTree) Отображение дерева XML-документа.
    #34268363
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какие ошибки-то? ClassCastException? Или где?
...
Рейтинг: 0 / 0
(JTree) Отображение дерева XML-документа.
    #34268380
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ClassCastException

Вот весь стек:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
java.lang.ClassCastException

        at editor.EditorPanel$XMLTreeSelectionListener.valueChanged(EditorPanel.java: 46 )

        at javax.swing.JTree.fireValueChanged(JTree.java: 2392 )

        at javax.swing.JTree$TreeSelectionRedirector.valueChanged(JTree.java: 2763 )

        at javax.swing.tree.DefaultTreeSelectionModel.fireValueChanged(DefaultTreeSelectionModel.java: 629 )

        at javax.swing.tree.DefaultTreeSelectionModel.notifyPathChange(DefaultTreeSelectionModel.java: 1076 )

        at javax.swing.tree.DefaultTreeSelectionModel.setSelectionPaths(DefaultTreeSelectionModel.java: 287 )

        at javax.swing.tree.DefaultTreeSelectionModel.setSelectionPath(DefaultTreeSelectionModel.java: 170 )

        at javax.swing.JTree.setSelectionPath(JTree.java: 1168 )

        at javax.swing.plaf.basic.BasicTreeUI.selectPathForEvent(BasicTreeUI.java: 2192 )

        at javax.swing.plaf.basic.BasicTreeUI$MouseHandler.handleSelection(BasicTreeUI.java: 2840 )

        at javax.swing.plaf.basic.BasicTreeUI$MouseHandler.mousePressed(BasicTreeUI.java: 2801 )

        at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java: 222 )

        at java.awt.Component.processMouseEvent(Component.java: 5097 )

        at java.awt.Component.processEvent(Component.java: 4897 )

        at java.awt.Container.processEvent(Container.java: 1569 )

        at java.awt.Component.dispatchEventImpl(Component.java: 3615 )

        at java.awt.Container.dispatchEventImpl(Container.java: 1627 )

        at java.awt.Component.dispatchEvent(Component.java: 3477 )

        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java: 3483 )

        at java.awt.LightweightDispatcher.processMouseEvent(Container.java: 3195 )

        at java.awt.LightweightDispatcher.dispatchEvent(Container.java: 3128 )

        at java.awt.Container.dispatchEventImpl(Container.java: 1613 )

        at java.awt.Window.dispatchEventImpl(Window.java: 1606 )

        at java.awt.Component.dispatchEvent(Component.java: 3477 )

        at java.awt.EventQueue.dispatchEvent(EventQueue.java: 456 )

        at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java: 201 )

        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java: 151 )

        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java: 145 )

        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java: 137 )

        at java.awt.EventDispatchThread.run(EventDispatchThread.java: 100 )


BlazkowiczКакие ошибки-то? ClassCastException? Или где?
...
Рейтинг: 0 / 0
(JTree) Отображение дерева XML-документа.
    #34268496
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/tree/TreePath.html#getLastPathComponent()
For a path returned by DefaultTreeModel this will return an instance of TreeNode .
...
Рейтинг: 0 / 0
(JTree) Отображение дерева XML-документа.
    #34268568
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, уже разобрался. Не надо было приводить к DefaultMutableTreeNode. Надо сразу к Node

Всё оказалось намного проще. Люблю жаву!:)

Код: plaintext
ROLLBACK;
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / (JTree) Отображение дерева XML-документа.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]