Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
0 / 0 / 1
Регистрация: 15.05.2013
Сообщений: 64

Как реализовать переключатель в JTree?

15.05.2013, 22:29. Показов 1607. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет, добрые люди! Вопрос такой.
При использовании компонента Jtree, есть ли возможность поставить переключатель, чтобы тот, в зависимости от того, какое состояние выбрано, менял текст в конечном узле?! например так, вместо двух кнопок будет, один переключатель, то есть после того как выбираем положение, конечным узлам присваивается значение, меняется их текст, еще раз щелкнули меняется еще раз.
Буду рад, конструктивному ответу!
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.05.2013, 22:29
Ответы с готовыми решениями:

Как реализовать переключатель функций?
Здравствуйте, облазил пол форума и не нашел как реализовывается переключатель toogle() с выбором функций в новой версии jquery. Суть...

Реализовать такой переключатель
Здравствуйте,увидел тут такой переключатель,подскажите как такой реализовывается на jquery?Или хотя бы в какую сторону копать? Заранее...

Синхронизация потоков (переключатель). Реализовать задачу, которая имитирует работу часов
Необходимо реализовать задачу, которая имитирует работу часов. Вот мой пример кода, но он не соответствует условию. class Clock ...

2
Кандёхаем веселее!
 Аватар для MLPMan
296 / 330 / 76
Регистрация: 02.10.2012
Сообщений: 2,175
16.05.2013, 15:27
Лучший ответ Сообщение было отмечено Ra21 как решение

Решение

Пример:
Java
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
package TreeTst;
 
import javax.swing.tree.*;
import javax.swing.JTree;
 
 
    /*
    * Новый вид ветки, для изменения отображения текста.
    */
 
 
class FileNode extends DefaultMutableTreeNode {
    
    private boolean showExt;
 
    public boolean isShowExt() {
        return showExt;
    }
 
    public void setShowExt(boolean showExt) {
        this.showExt = showExt;
    }
    
    @Override
    public String toString() {
    if (showExt) return userObject.toString();
    int pointPos = userObject.toString().lastIndexOf('.');
    return userObject.toString().substring(0, pointPos);
    }
    
    public FileNode(String obj) {
    super(obj);
    }
}
 
public class TreeSwitch {
 
    /*
     * Создает модель данных дерева и заполняет ее.
     */
   
    
    public static DefaultTreeModel generateTreeMod() {
    
        DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode("My computer");
        DefaultTreeModel result = new DefaultTreeModel(rootNode);
        
        DefaultMutableTreeNode drvC = new DefaultMutableTreeNode("C:");
        DefaultMutableTreeNode drvD = new DefaultMutableTreeNode("D:");
        
        drvC.add(new DefaultMutableTreeNode("Program files"));
        drvD.add(new FileNode("hello.java"));
        drvD.add(new FileNode("pict.bmp"));
        drvD.add(new FileNode("pron.jpg"));
        drvC.add(new FileNode("pagefile.sys"));
        drvC.add(new FileNode("config.sys"));
        drvC.add(new FileNode("autoexec.bat"));
        rootNode.add(drvC);
        rootNode.add(drvD);
        
        return result;
            
    }
    
    /*
    * Рекурсивно лазит по всем детям узла nod 
    * и делает setShowExt(b), если узел экземпляр FileNode
    */
    
    public static void setShowExt(TreeNode nod, boolean b) {
    if (nod instanceof FileNode) {((FileNode)nod).setShowExt(b); return;} // или1
    //if (nod.isLeaf()) {((FileNode)nod).setShowExt(b); return;} // или2
       //Если или2 - выдает ошибку, попадая на пустую "папку" (Program files)
    int siz = nod.getChildCount();
    for (int i = 0; i<siz; i++) {setShowExt(nod.getChildAt(i),b);}
    }
    
    /*
    * Вызывает setShowExt() для
    * каждого узла 2-го уровня модели дерева(ребенка root)
    */    
    
    public static void setShowExtInLeafs(TreeModel t, boolean b) {
    DefaultMutableTreeNode root;
    root = (DefaultMutableTreeNode)t.getRoot();    
    int siz = root.getChildCount();
    for (int i = 0; i<siz; i++) setShowExt(root.getChildAt(i),b);
    ((DefaultTreeModel)t).reload(); //перерисовать дерево
    }
    
}

GUI:
Java
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
import java.awt.*;
import java.awt.event.*;
import javax.swing.JTree;
import javax.swing.tree.*;
import javax.swing.JScrollPane;
import java.util.logging.Level;
import java.util.logging.Logger;
 
public class HtmlTree extends Frame {
 
JTree tree;
BorderLayout bl = new BorderLayout();
Panel pane = new Panel();
Button btOk = new Button("SHOW");
Button btC = new Button("HIDE");
 
private void makeCanClose(){
WindowAdapter a = new WindowAdapter()   
        {
       public void windowClosing(WindowEvent e) { setVisible(false); }
        };    
this.addWindowListener(a);
}
 
private void initWindow(){
setLayout(bl);
setBounds(200,200,300,480);
setVisible(true);
}
 
 
private void initComps(TreeModel tm) {
tree = new JTree(tm);
add(new JScrollPane(tree),BorderLayout.CENTER);
pane.setPreferredSize(new Dimension(300,50));
add(pane,BorderLayout.SOUTH);
pane.setLayout(null);
 
btOk.addMouseListener( new MouseAdapter() {public void mouseClicked(MouseEvent e) {
TreeSwitch.setShowExtInLeafs(tree.getModel(), true);
}});
 
btC.addMouseListener( new MouseAdapter() {public void mouseClicked(MouseEvent e) {
TreeSwitch.setShowExtInLeafs(tree.getModel(), false);
}});
        
pane.add(btOk);
pane.add(btC);
btOk.setBounds(20, 10, 100, 30);
btC.setBounds(140, 10, 100, 30);
}
 
public HtmlTree(TreeModel tm){
makeCanClose();
initWindow();
initComps(tm);
this.revalidate();
}
 
}
Launcher:
Java
1
2
3
public static void main(String[] args) {
HtmlTree tr = new HtmlTree( TreeSwitch.generateTreeMod() );
}
1
0 / 0 / 1
Регистрация: 15.05.2013
Сообщений: 64
17.05.2013, 17:29  [ТС]
Ребят, что не так делаю?? апплет при запуске выдает ошибку. "Start: applet not initialized."
в приложении это дело работает, а вот в апплете не хочет.

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.tree.*;
class TreeSample extends JApplet //JFrame
{
DefaultMutableTreeNode level0 = new DefaultMutableTreeNode("Геометрические фигуры");
JTree jt = new JTree(level0);
//public TreeSample()
//{
//addWindowListener(new WindowAdapter()
// {
// public void windowClosing(WindowEvent e)
// {
// dispose();
// System.exit(0);
// }
// });
//init();
// }
// public static void main(String args[])
//{
// TreeSample mainFrame = new TreeSample();
// mainFrame.setSize(400, 300);
// mainFrame.setTitle("Дерево файлов");
// mainFrame.setVisible(true);
// }
public void init()
{
// this.setSize(new Dimension(400, 300));
// this.setTitle("Дерево файлов");
DefaultMutableTreeNode level1a;
DefaultMutableTreeNode level1b;
DefaultMutableTreeNode level1c;
DefaultMutableTreeNode level1d;
DefaultMutableTreeNode level1e;
DefaultMutableTreeNode level1f;
DefaultMutableTreeNode level1g;
DefaultMutableTreeNode level1h;
level1d = new DefaultMutableTreeNode("S");
level1e = new DefaultMutableTreeNode("P");
level0.add(level1d);
level0.add(level1e);

level1b = new DefaultMutableTreeNode("Треугольник");
DefaultMutableTreeNode level1b_1=new DefaultMutableTreeNode("Прямоугольный");
level1b_1.add(new DefaultMutableTreeNode("S = 1/2 * a * b"));
level1b_1.add(new DefaultMutableTreeNode("P = a + b + (a^2 + b^2)^1/2 "));
level1b.add(level1b_1);
DefaultMutableTreeNode level1b_2=new DefaultMutableTreeNode("Остроугольный");
level1b_2.add(new DefaultMutableTreeNode("S = 1/2 * a * b * sin(a) "));
level1b.add(level1b_2);
DefaultMutableTreeNode level1b_3=new DefaultMutableTreeNode("Тупоугольный");
level1b_3.add(new DefaultMutableTreeNode("S = (p * (p - a) * (p - b) * (p - c))^1/2"));
level1b.add(level1b_3);
level1g = new DefaultMutableTreeNode("S = 1/2 * a * h ");
level1b.add(level1g);
level1g = new DefaultMutableTreeNode("P = a + b + c ");
level1b.add(level1g);
level0.add(level1b);

level1a = new DefaultMutableTreeNode("Четырехугольник" );
DefaultMutableTreeNode level1a_1=new DefaultMutableTreeNode("Прямоугольник");
DefaultMutableTreeNode level1a_1_1=new DefaultMutableTreeNode("Квадрат");
level1a_1.add(level1a_1_1);
level1a_1_1.add(new DefaultMutableTreeNode("S = a^2"));
level1a_1_1.add(new DefaultMutableTreeNode("P = 4 * a"));
level1a_1.add(new DefaultMutableTreeNode("S = a * b"));
level1a.add(level1a_1);
level1a_1.add(new DefaultMutableTreeNode("P = 2 * (a + b)"));
level1a.add(level1a_1);


DefaultMutableTreeNode level1a_2=new DefaultMutableTreeNode("Параллелограмм") ;

DefaultMutableTreeNode level1a_2_1=new DefaultMutableTreeNode("Ромб");
level1a_2_1.add(new DefaultMutableTreeNode("S = (D * d)/2"));
level1a_2_1.add(new DefaultMutableTreeNode("P = 4 * a"));
level1a_2.add(level1a_2_1);
level1a.add(level1a_2);
level1a_2.add(new DefaultMutableTreeNode("S = a * b * sin(a)"));
level1a_2.add(new DefaultMutableTreeNode("P = 2 * (a + b)"));
level1h = new DefaultMutableTreeNode("S = 1/2 * a * h ");
level1a.add(level1h);
level1h = new DefaultMutableTreeNode("P = a + b + c + d ");
level1a.add(level1h);
level0.add(level1a);

level1c = new DefaultMutableTreeNode("Эллипс");
DefaultMutableTreeNode level1c_1=new DefaultMutableTreeNode("Окружность");
level1c_1.add(new DefaultMutableTreeNode("S = Pi * r^2"));
level1c_1.add(new DefaultMutableTreeNode("P = 2 * Pi * r"));
level1c.add(level1c_1);
level0.add(level1c);
level1f = new DefaultMutableTreeNode("S = Pi * a * b");
level1c.add(level1f);
level1f = new DefaultMutableTreeNode("P = 2 * Pi * (((R1^2) + (R2^2)) / 2)^1/2");
level1c.add(level1f);
this.getContentPane().add(jt);
}
}

Добавлено через 21 час 32 минуты
разобрался, спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.05.2013, 17:29
Помогаю со студенческими работами здесь

Как запихать данные из DB в JTree
Как сделать JTree из DB В чем я не прав ? Сделал класс public class GrupmatTreeModel implements TreeModel { ...

Как сохранить данные из jTree в xml?
У меня вот какой код имеется... (Естественно выдает кучу ошибок) try { ...

JTree оказался не так прост как хотелось бы
Описываю происходящее: По правой кнопке на CustomTree(extends JTree) вызывается компонент JPopupMenu с двумя JMenuItem(createRoot,...

Как по правой кнопке мыши выделить путь дерева в JTree
Как по правой кнопке мыши выделить путь дерева в JTree так ка это происходит по левой...

Подскажите пожалуйста, как установить иконку в древе на каждом узле JTree?
Доброго времени суток! Подскажите пожалуйста, как установить иконку в древе на каждом узле?


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru