Здравствуйте, Вопрос такого плана. Не понимаю почему не берет мое созданное дерево, пример взял из книги, ставлю свой класс, а вместо своего дерева мне показывает стандартное! В чем фишка?
Вызываю свой класс которой расширяет JTree
Код | JPanel test_panel = new JPanel(new BorderLayout()); V_Test_Tree tree = new V_Test_Tree(); test_panel.add(tree, BorderLayout.CENTER);
|
V_Test_Tree.class
Код | import java.util.ArrayList;
import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTree; import javax.swing.event.TreeModelListener; import javax.swing.tree.TreeModel; import javax.swing.tree.TreePath;
public class V_Test_Tree extends JTree { // дерево на основе нашей модели public V_Test_Tree() { JPanel tree_panel = new JPanel(); JTree tree = new JTree(new SimpleModel());
tree_panel.add(new JScrollPane(tree));
add(tree_panel); } }
// наша модель для дерева class SimpleModel implements TreeModel {
// корень дерева и основные узлы private String root = "Кое-что интересное";
private String colors = "Цвета", food = "Еда";
// хранилища данных private ArrayList rootList = new ArrayList(), colorsList = new ArrayList(), foodList = new ArrayList();
public SimpleModel() { // заполняем списки данными rootList.add(colors); rootList.add(food); colorsList.add("Красный"); colorsList.add("Зеленый"); foodList.add("Мороженое"); foodList.add("Бутерброд"); }
// возвращает корень дерева @Override public Object getRoot() { return root; }
// возвращает потомка узла по порядковому номеру @Override public Object getChild(Object parent, int index) { if (parent == root) return rootList.get(index); else if (parent == colors) return colorsList.get(index); else if (parent == food) return foodList.get(index); return null; }
// сообщает о количестве потомков узла @Override public int getChildCount(Object parent) { if (parent == root) return rootList.size(); else if (parent == colors) return colorsList.size(); else if (parent == food) return foodList.size(); return 0; }
// определяет, какие узлы являются листьями @Override public boolean isLeaf(Object node) { if (colorsList.contains(node) || foodList.contains(node)) return true; else return false; }
// позволяет получить порядковый номер потомка @Override public int getIndexOfChild(Object parent, Object child) { if (parent == root) return rootList.indexOf(child); else if (parent == colors) return colorsList.indexOf(child); else if (parent == food) return foodList.indexOf(child); return 0; }
@Override public void valueForPathChanged(TreePath path, Object newValue) { // TODO Auto-generated method stub
}
@Override public void addTreeModelListener(TreeModelListener l) { // TODO Auto-generated method stub
}
@Override public void removeTreeModelListener(TreeModelListener l) { // TODO Auto-generated method stub
} }
|
Спасибо |