Помогите разобраться с Jtree java

Рейтинг: 1Ответов: 1Опубликовано: 09.04.2015

Учил по книге Java 7 (4-е изд.) Авторы: Хабибуллин Ильдар класс Jtree там есть пример:

 Hashtable root = new Hashtable();
        Hashtable subtree1 = new Hashtable();
        root.put("Узел 1", subtree1);
        subtree1.put("лист 2a", new Integer(21));
        Hashtable subtree2 = new Hashtable();
        subtree1.put("Узел", subtree2);
        subtree2.put("Лист 3a",new Integer(31));
        subtree2.put("Лист 3b",new Integer(32));
        subtree2.put("Лист 3c",new Integer(33));
        subtree1.put("Лист 2b",new Integer(22));
        root.put("Лист 1",new Integer(1));

        JTree tr = new JTree(root); 

при добавлении в переменную tr типа JTree netbeans ругается и предлагает привести root к TreeModel или к TreeNode , после того как я привел :

JTree tr = new JTree((TreeNode) root);

или

JTree tr = new JTree((TreeModel) root);

выходит такая ошибка

Exception in thread "main" java.lang.ClassCastException: com.sun.org.apache.xalan.internal.xsltc.runtime.Hashtable cannot be cast to javax.swing.tree.TreeModel
    at layout.Layout.main(Layout.java:48)
Java Result: 1

Ответы

▲ 4Принят

Возможно, вы импортировали не тот класс. Класс javax.swing.JTree может принимать в качестве аргумента конструктора объект типа Hashtable.

http://docs.oracle.com/javase/7/docs/api/javax/swing/JTree.html#JTree(java.util.Hashtable)

А приведение к типу интерфейса TreeNode или TreeModel совершенно справедливо выбрасывает исключение, так как тип Hashtable не имплементирует данные интерфейсы.