powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Сортировка jTree
5 сообщений из 5, страница 1 из 1
Сортировка jTree
    #38217287
Полуламер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую java-знатоков. У меня пока с этим языком программирования отношения не очень уверенные, многие вещи сразу не желают получаться. Вот, казалось бы, известная проблема - заполняется jTree Swing, узлы рисуются, их все видно, но не отсортированы. Интернет пестрит примерами, выбрал для себя более-менее понятный:

Переписываю класс DefaultMutableTreeNode:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
    class TreeNodeExtra extends DefaultMutableTreeNode implements Comparable {
        public TreeNodeExtra(String name) {
            super(name);
        }

        @Override
        public void insert(final MutableTreeNode newChild, final int childIndex) {
            super.insert(newChild, childIndex);
            Collections.sort(this.children);
        }

        public int compareTo(final Object o) {
            return this.toString().compareToIgnoreCase(o.toString());
        }
    }


Потом в программе вот так заполняется дерево (корневой узел root со старшими узлами определены ранее):

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
            for (int levelBondsTree = 0; levelBondsTree < root.getChildCount(); levelBondsTree++) {
                DefaultMutableTreeNode leafBonds = (DefaultMutableTreeNode) root.getChildAt(levelBondsTree);

                Integer assetClassIndex = levelBondsTree + 4;
                List<String> securitiesData = // запоняется строками из БД

                if ((null != securitiesData) && (securitiesData.size() > 0)) {
                    for (String fundData : securitiesData) {                        
                        TreeNodeExtra dmtn = new TreeNodeExtra(fundData );
                        leafBonds.add(dmtn);
                    }
                }

 Tree.setModel(new DefaultTreeModel(root));



Сортировка не работает. Подскажите, пожалуйста, что здесь не так?
...
Рейтинг: 0 / 0
Сортировка jTree
    #38217314
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Родительский узел сортирует дочерние. Вот тут вы получили родительский узел и добавили в него дочерние.
DefaultMutableTreeNode leafBonds = (DefaultMutableTreeNode) root.getChildAt(levelBondsTree);
Но откуда нам знать что этот узел реализует TreeNodeExtra? Поменяйте в этой строке DefaultMutableTreeNode на TreeNodeExtra.
Если будет ClassCastException, то вы не правильно определили узлы на уровень выше. Если исключения не будет, то ставьте breakpoint в метод insert() и смотрите пришел ли вызов туда вообще. Действительно ли отсортировались узлы нужным вам порядком после выполнения sort()
...
Рейтинг: 0 / 0
Сортировка jTree
    #38217416
Полуламер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczЕсли будет ClassCastException, то вы не правильно определили узлы на уровень выше.
Вы совершенно правы, действительно получил ClassCastException. Не можете ли объяснить, в чем здесь неправильность, что не так с узлами верхнего уровня? И как решить проблему в этом случае?
...
Рейтинг: 0 / 0
Сортировка jTree
    #38217445
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У дерева есть корень - 1й уровень. У корня есть дочерние узлы - 2й уроветь. Они у вас не реализуют сортировку. Откуда они беруться из вашего листинга не понятно.
В показаном вами коде вы создаёте дочерние листья уже 3го уровня - вашего нового типа. Если вы добавите 4й уровень, то ваши узлы 3го уровня их отсортируют.
А вот узлы 2го уровня не реализуют сортировку и поэтому ваш 3й уровень не отсортирован.
...
Рейтинг: 0 / 0
Сортировка jTree
    #38217477
Полуламер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Благодарю Вас, разобрался - все теперь сортируется как положено.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Сортировка jTree
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]