Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / (JTree) Отображение дерева XML-документа. / 5 сообщений из 5, страница 1 из 1
19.01.2007, 14:23:01
    #34268255
Sarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JTree) Отображение дерева XML-документа.
Моё дерево должно показывать структуру 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
19.01.2007, 14:43:08
    #34268363
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JTree) Отображение дерева XML-документа.
Какие ошибки-то? ClassCastException? Или где?
...
Рейтинг: 0 / 0
19.01.2007, 14:45:53
    #34268380
Sarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JTree) Отображение дерева XML-документа.
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
19.01.2007, 15:10:51
    #34268496
Timm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JTree) Отображение дерева XML-документа.
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
19.01.2007, 15:26:23
    #34268568
Sarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JTree) Отображение дерева XML-документа.
Спасибо, уже разобрался. Не надо было приводить к DefaultMutableTreeNode. Надо сразу к Node

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

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


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