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

Код: plaintext
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.
//.............//
//Инициалим объекты модель и дерево
model= new  DefaultTreeModel(root);
tree= new  JTree(model);
//.............//
//Добавляем события по прослушиванию сворачивания/разворачивания узлов дерева
tree.addTreeExpansionListener( new  TreeExpansionListener() {

    public   void  treeExpanded(TreeExpansionEvent event){

   //Необходимо получить путь к раскрываемому элементу
   TreePath tp= event.getPath();
   DefaultMutableTreeNode selectNode1=(DefaultMutableTreeNode)tp.getLastPathComponent();
   //удаляем дочерний элемент раскрывающегося узла
   //Где-то здесь проблема (наверное теряется идентификатор)
    while (selectNode1.children().hasMoreElements()){                           model.removeNodeFromParent((MutableTreeNode)selectNode1.children().nextElement());
   }
   //ищем в базе данных по полученному пути, ID раскрываемого узла
    for  ( int  i= 1 ;i<tp.getPathCount();i++){
     //Имеем дело с корневым элементом
      if  (i== 1 ){
       resultSet3=dbClass.executeProcedure(tp.getPathComponent(i).toString(), 0 );
     }
     //..........................//
   }
   //Выполним ХП по поиску дочерних эл-ов текущего узла
    try {
      if  (resultSet3.next()){
       resultSet1=dbClass.executeParIDProcedure(resultSet3.getInt( 1 ));
        while (resultSet1.next()){
         DefaultMutableTreeNode newNode= new  DefaultMutableTreeNode(""+resultSet1.getString( 1 ));                                model.insertNodeInto(newNode,selectNode1,selectNode1.getChildCount());
       }
     }
   }
    catch (SQLException e){
     System.err.println(e.getMessage()+"   String 128 MainModule");
   }
 }

}); 

Вообщем проблема как я понял с удалением дочерних эл-ов из узла. Я раскрываю узел, дочерние элементы удаляются нужные элементы из базы данных добавляются, если я попытаюсь свернуть этот узел, то он не сворачивается, попробовал
закоментирвать строку удаления "model.removeNodeFromParent((MutableTreeNode)selectNode1.children().nextElement());"
узел открывается и закрывается нормально.В чем же проблема?
...
Рейтинг: 0 / 0
JTree удаление дочерних узлов
    #33458367
Sherst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Неужели никто не сталкивался? :(
...
Рейтинг: 0 / 0
JTree удаление дочерних узлов
    #33458759
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не понял, а зачем слушатели на раскрытие узла? я узлы подгружаю в кеш
при вызове getChild() интерфейса TreeModel.

у меня есть хеш-карта: идентификатор_узла -> список_детей.

Код: plaintext
1.
 public Object getChild(Object parent, int index) {...}
parent я привожу к своему классу, беру идентификатор, вызываю метод
получения детей из хеш-карты по идентификатору родителя.
суть метода:


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
if (map.get(id) == null) {
   //получаем список из БД
   List childs = getChildsFromDB(id);
   if (childs == null || childs.size()<= 0 ) {
      childs = специальный_объект_заглушка;
   }
   map.put(id, childs);
}
if (map.get(id) == null || map.get(id).equals(специальный_объект_заглушка) ) {
   return null;
}
else {
   return (List) map.get(id);
}

-----------------------------------
The Bat + My Gate

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
JTree удаление дочерних узлов
    #33460587
Sherst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Deady
не понял, а зачем слушатели на раскрытие узла?

А как же я узнаю, что пользователь раскрыл/свернул узел?

Может все таки можно как-то подправить существующий вариант?
Заранее спасибо.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / JTree удаление дочерних узлов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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