Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.07.2012, 21:04   #1
9esa
Пользователь
 
Регистрация: 26.02.2012
Сообщений: 20
Восклицание Взаимодействие CheckBox и Jtree (Java)

Доброго времени суток.
Имеется панель на который расположен CheckBox и JTree
Дерево строиться на основе мапы
{2=1,3=1,4=2} ,где под каждой цифрой стоит своё слово.
Вот код создания дерева
Код:
 DefaultMutableTreeNode top[]=new DefaultMutableTreeNode[1000];// max number of levels
       for (int i=1;i<StoreInfFun.length;i++)
         {
             top[i]=new DefaultMutableTreeNode(StoreInfFun[i].RetFunc());//.append("Loop x-").append(repeat.SortingFunc.get(i)));      
         }
 
          for(int i=2;i<StoreInfFun.length;i++)
          { 
                 if (Integer.parseInt(SimpleVis.FamConn.get(i).toString())!=0)
                     top[Integer.parseInt(SimpleVis.FamConn.get(i).toString())].add(top[i]);
                   
             
          }
 
      treeModel = new DefaultTreeModel(top[1]);

        tree = new JTree(treeModel);
Чек бокс строиться из уникальных элементов мапы вот код
Код:
 final JCheckBox ChekBox[] = new JCheckBox[repeat.Un.size()];  
          int t;
          for(int i=1;i<repeat.Un.size()+1;i++)
          {
              
              ChekBox[i-1]=new JCheckBox(repeat.Un.get(i).toString());
              ChekPanal.add(ChekBox[i-1]);
              ChekBox[i-1].setSelected(true);
              CheckBoxs[i]=true;
          }
          for(t=0;t<repeat.Un.size();t++)      
          ChekBox[t].addItemListener(this);
При каждом клике на чек бокс удаляется определенный элемент из дерева
Код:
 startRow = 2;//Откуда начинаем
               
                 prefix =repeats.Un.get(IndexLast+1).toString();//Что ищем
                  
                 if(State==2)//Если галка
                  
                     for(int i = 0; i < tree.getRowCount(); i ++) tree.expandRow(i);//Раскрываем все ветви
               
                     try{
                      
                        while(tree.getNextMatch(prefix, startRow, Position.Bias.Backward)!=null) //Удаляеем все отмечены
                        {
                        TreePath path = tree.getNextMatch(prefix, startRow, Position.Bias.Backward);//Ищем необходимые ветви                       
                        MutableTreeNode node = (MutableTreeNode)path.getLastPathComponent(); 
                    
                        
                        //смотрим на положение  
                        if(State==2)
                         model.removeNodeFromParent(node);//Удаляемые компоненты
                        tree.repaint();
                        startRow++; 
                         
                       }
                        for(int i = tree.getRowCount()-1; i > 0; i --) tree.collapseRow(i);
                   }
                   catch(IllegalArgumentException ex)
                   {
                       
                      return;
                   }
Вопрос в том ,что при повторной отметки чек бокса необходимо восстановить удаленные ветви. Пытался просто копировать из копии дерева
Код:
tree=TreeSec
Не работает
Так же пробовал перерисовывать заново все дерево с помощью
Код:
TreePath path = tree.getNextMatch(prefix, startRow, Position.Bias.Forward);
                              TreeNode node = (TreeNode)path.getLastPathComponent();
  MutableTreeNode newNode = new DefaultMutableTreeNode(top[1]);
                         MutableTreeNode newNodes = new DefaultMutableTreeNode(top[2]);
            node.getChildCount());
                      node = (MutableTreeNode)path.getPathComponent(0);
                      model.insertNodeInto(newNode, newNodes, node.getChildCount());
Вопрос заключается в том как с помощью модели дерева построить новое дерево
9esa вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Взаимодействие JQuery - Java custom JavaScript, Ajax 11 20.01.2012 14:39
Java - CheckBox _Milana_ Помощь студентам 0 27.11.2011 22:35
Взаимодействие программ C# Genesis Общие вопросы .NET 1 16.08.2010 10:31
Взаимодействие C# и 1с Sparky Свободное общение 1 05.02.2010 04:31
Взаимодействие форм Anekdot Общие вопросы Delphi 2 29.01.2010 07:33