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

Код: 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
26.12.2005, 20:58
    #33458367
Sherst
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JTree удаление дочерних узлов
Неужели никто не сталкивался? :(
...
Рейтинг: 0 / 0
27.12.2005, 10:18
    #33458759
Penkov Vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JTree удаление дочерних узлов
не понял, а зачем слушатели на раскрытие узла? я узлы подгружаю в кеш
при вызове 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
27.12.2005, 20:52
    #33460587
Sherst
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JTree удаление дочерних узлов
Deady
не понял, а зачем слушатели на раскрытие узла?

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

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


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