Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не берет созданный JTree, показывает стандартный. 
V
    Опции темы
Killer_13
  Дата 16.7.2011, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 12.1.2008
Где: Germany

Репутация: нет
Всего: 1



Здравствуйте, Вопрос такого плана.
Не понимаю почему не берет мое созданное дерево, пример взял из книги, ставлю свой класс, а вместо своего дерева мне показывает стандартное!
В чем фишка?

Вызываю свой класс которой расширяет 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

    }
}




Спасибо
PM MAIL   Вверх
dorogoyIV
Дата 17.7.2011, 05:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 36
Всего: 46



Код

public class V_Test_Tree extends JPanel //JTree
{
 // дерево на основе нашей модели
 public V_Test_Tree()
 {
//  JPanel tree_panel = new JPanel();
  JTree tree = new JTree(new SimpleModel());
//  tree_panel.add(new JScrollPane(tree));
setLayout(new BorderLayout());
add(new JScrollPane(tree));
//  add(tree_panel);
 }
}

PM MAIL   Вверх
Killer_13
Дата 17.7.2011, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 12.1.2008
Где: Germany

Репутация: нет
Всего: 1



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

setLayout(new BorderLayout());

Лупит дерево по умолчанию.
В BorderLayout нету свойства setOpaque(false)? Или как мне убрать белую подложку?
Спас.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.0759 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.