0 / 0 / 0
Регистрация: 23.11.2013
Сообщений: 11

JTree оказался не так прост как хотелось бы

21.04.2015, 16:30. Показов 1742. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Описываю происходящее:
По правой кнопке на CustomTree(extends JTree) вызывается компонент JPopupMenu с двумя JMenuItem(createRoot, createNode)
Вызывается из всплывающего меню:
Java
1
2
3
4
5
6
7
8
9
10
11
12
createNewNode.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                CustomTree.createNewNode();
            }
        });
createNewRoot.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                CustomTree.createNewRoot();
            }
        });
Сам класс CustomTree:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class CustomTree extends JTree {
    public static void createNewNode(/*Тут, возможно, стоит передать JTree.getRoot()*/){
        TextEnterFrame.createFrame().addComponentListener(new ComponentAdapter() {//createFrame() открывает окно с текстовым полем
            @Override
            public void componentHidden(ComponentEvent e) {//окно прячется при попытке закрыть, реализовал так ибо если оно закрывается - закрывается и начальное
                super.componentHidden(e);
                String nodeName = TextEnterFrame.getStringName();//возвращает String введенный с клавиатуры
                //Тут нужно реализовать добавление листа к переданному корню
            }
        });
    }
    public static void createNewRoot(/*Тут, возможно, стоит передать JTree */){
        TextEnterFrame.createFrame().addComponentListener(new ComponentAdapter() {
            @Override
            public void componentHidden(ComponentEvent e) {
                super.componentHidden(e);
                String rootName = TextEnterFrame.getStringName();
                //Тут нужно реализовать добавление корня в дереве
            }
        });
    }
 
}
Не могу нагуглить чего-нибудь, что помогло бы мне, во всех примерах юзают какой-то setModel и другие штуки, которые вовсе не интуитивно-понятны
Хотелось бы увидеть простой пример использование JTree в пределах одного класса, с комментариями.
Что-то вроде
Java
1
2
3
CustomJTree tree = new CustomJTree();//создали дерево
tree.addRoot();//добавили корень
tree.addNode(root);//добавили лист к корню root
и логику методов addRoot и addNode желательно тоже объяснить

так же буду рад любому дельному совету кроме "вот эту книгу почитай"
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.04.2015, 16:30
Ответы с готовыми решениями:

Setprecision работает не так как хотелось бы
Как я понимаю функция setprecision определяет сколько знаков после точки должно выводиться. Но на деле происходит иначе. #include...

Функция работает не так как хотелось бы(
хочу попробовать сделать калькульятор на JS . При нажатии на кнопку '1' вызывается функция push() , которая выводит в область (textarea)...

Код не работает так, как хотелось бы
В книге есть задача с кодом: #include "stdafx.h" #include <iostream> using namespace std; int main() { setlocale (0,...

2
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
21.04.2015, 20:17
Цитата Сообщение от White Tea Посмотреть сообщение
во всех примерах юзают какой-то setModel и другие штуки, которые вовсе не интуитивно-понятны
Если вам нужно делать хоть сколько-нибудь не самые примитивные операции - придется разобраться.
На самом деле всё довольно просто. Модель - это такой объект, который хранит собственно "данные".
Модель вы можете передать в JTree. После этого JTree будет у этой модели спрашивать: сколько в дереве узлов, что выводить напротив конкретного узла, и т.п.
Это предоставляет некую гибкость. Вы добавляете в вашу модель нужные данные - а JTree уже сам узнает у модели, что именно ему нужно отрисовать.
По умолчанию в JDK уже есть один готовый класс модели для JTree - DefaultTreeModel. Собственно в ваших обработчиках вам надо модифицировать именно его.

Туториал от oracle с примерами - http://docs.oracle.com/javase/... /tree.html

PS. Вроде бы JTree явно может иметь только один root. Это можно обойти, если скрыть root (tree.setRootNodeVisible(false), а в своей программе использовать child-ы root-а.
1
636 / 528 / 165
Регистрация: 01.04.2010
Сообщений: 1,843
22.04.2015, 17:43
Цитата Сообщение от turbanoff Посмотреть сообщение
PS. Вроде бы JTree явно может иметь только один root.
Не вроде бы, а именно так. Любое дерево может иметь только 1 корень.

Цитата Сообщение от White Tea Посмотреть сообщение
так же буду рад любому дельному совету кроме "вот эту книгу почитай"
И всё же вот. 13 глава.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.04.2015, 17:43
Помогаю со студенческими работами здесь

Операция сравнения пошла не так, как хотелось бы
Пользователь вводит значения, сохраняющиеся в класс Product; программа запрашивает слово для поиска и при совпадение только-что введенного...

Программа работает неправильно (не так, как хотелось бы)
Здравствуйте! Есть задача: "Определите, можно ли вычеркнуть из данного массива одно число так, чтобы оставшиеся числа оказались...

Как сделать так, чтобы по ссылке класса А оказался класс Б
Добрый день! Есть Dictionary, содержащий экземпляры класса "Книга". Есть другие классы, ссылающиеся на эти экземпляры, допустим на А....

Помогите со скриптом на PHP. Он работает, но не так как хотелось бы
Помогите со скриптом на PHP. Он работает,но не так как хотелось бы. Я только учусь PHP. Вот главный скрипт: <html> ...

Переместить элемент массива так, чтобы он оказался упорядоченным
Дан массив A из N целых чисел. Все его элементы, кроме одного, упорядочены по возрастанию. Переместить значение этого элемента на такую...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: показать затраченные материалы за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В качестве. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru