Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обновление содержимого JTree по таймеру 
:(
    Опции темы
JonsonXXX
Дата 25.4.2008, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 22.3.2008

Репутация: нет
Всего: нет



Здравствуйте, помогите с такой проблемой... Есть перечисленные ниже 2 функции, которые используются для построения дерева, а также главная функция, в которой они вызываются.(Приложение 1)  Данное дерево строится один раз и информацию берет из файлов. Как в данном случае сделать так, чтобы дерево обновлялось по таймеру? Т.е. например каждые 5 секунд перестраивалось заново. 

Приложение 1

Код


// функция заполнения массивов сетей и хостов, необходимых для построения дерева сетей
public void CreateAllNeededMass() throws IOException {

    FileInputStream FR1 = null;
    BufferedReader in1 = null;

    FR1 = new FileInputStream("./ComandStringTempFileHosts.txt");
    in1 = new BufferedReader(new InputStreamReader(FR1));

    String ComStr1;
    String ComStr2;

    while ( (ComStr1 = in1.readLine()) != null) {
        ComStrHostsMas.add(ComStr1);
    }

    in1.close();
    FR1.close();

    // заполняем массив с именами сетей и хостов, к которым они относятся
    for(int i = 0; i < ComStrHostsMas.size(); i++)
    {
     FileInputStream FR2 = null;
     BufferedReader in2 = null;

     FR2 = new FileInputStream("./ComandStringTempFileNets.txt");
     in2 = new BufferedReader(new InputStreamReader(FR2));

     while ( (ComStr2 = in2.readLine()) != null) {
       ComStrNetsMas.add(ComStr2);
     }

     in2.close();
     FR2.close();
     ComStrNetsMas.add(ComStrHostsMas.get(i));

    }
}

// функция построения дерева сетей
 public JTree BuildTree(DefaultMutableTreeNode SuperRoot){
    // Построение дерева сетей
    int NomNet = 0;
    for (int i = 0; i < ComStrHostsMas.size(); i++) {
      DefaultMutableTreeNode Host = new DefaultMutableTreeNode(ComStrHostsMas.get(i).toString());
      SuperRoot.add(Host);
      while (!ComStrNetsMas.get(NomNet).toString().equals(ComStrHostsMas.get(i).
          toString())) {
        DefaultMutableTreeNode Net = new DefaultMutableTreeNode(ComStrNetsMas.get(
            NomNet).toString());
        Host.add(Net);
        NomNet++;
      }
      NomNet++;
    }
    return new JTree(SuperRoot);
  }

// вызов функций

private void JbInit(){

...

  // добавить дерево в панель прокрутки
    int v = ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED;
    int h = ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED;
   
    CreateAllNeededMass();
    SuperRoot = new DefaultMutableTreeNode("HOSTS");
    tree = BuildTree(SuperRoot);

    jsp = new JScrollPane(tree, v, h);
  
  // добавить панель прокрутки в панель содержания
    contentPane.add(jsp, BorderLayout.BEFORE_FIRST_LINE);
  
// для обработки щелчков по элементам дерева  
    tree.addMouseListener(new MouseAdapter() {
      public void mouseClicked(MouseEvent me) {
         // некоторая функция, которая выполняется при нажатии на элемент дерева
    doMouseClicked(me);
      }
    });


...

}




PM MAIL   Вверх
ki6opr
Дата 26.4.2008, 06:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 67
Регистрация: 20.12.2006

Репутация: нет
Всего: нет



есть замечательный класс TimerTask smile

Код

.......
Timer updateTimer = new Timer(true);
TimerTask updaterTask = new TimerTask() {

            @Override
            public void run() {
                 // необходимые действия
            }
        };
        // время в милисекундах
        updateTimer.scheduleAtFixedRate(updater, 0, 1000);

PM MAIL ICQ   Вверх
JonsonXXX
Дата 26.4.2008, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 22.3.2008

Репутация: нет
Всего: нет



Да ) Я про него тоже вспомнил. В классе Main я создал подкласс

Код


  public class MyTask extends TimerTask {
    public void run() {
        ShowTree();
        System.out.println("Timer work!");
    }
  }



Затем в описании действий при открытии окна записал следующее:

Код


  public void this_windowOpened(WindowEvent e) {
    
       Timer timer = new Timer();
       TimerTask task = new MyTask();
       timer.schedule(task, 100, 2000);
 
  }



Только вот проблема, таймер работает... Если выводить System.out.println("Timer work!").. То "Timer work!" будет железно выводиться ровно так, как это нужно. А вот дерево даже не собирается обновлятся... Более того, оно вообще не выводится!!!!!!  smile   smile 
Может там как-то надо его специально обновлять. Хотя в описанных ранее функциях, я строю его с нуля. И все элементы изначально обнулял...

Добавлено через 10 минут и 11 секунд
Попробовал использовать таймер так:

Код


    Timer updateTimer = new Timer(true);
    TimerTask updaterTask = new TimerTask() {
      public void run() {
        ShowTree();
        System.out.println("It's a life!!!");
      }
    };
    // время в милисекундах
    updateTimer.scheduleAtFixedRate(updaterTask, 0, 5000);



Та же ситуация... НЕсмотря на то, что при пошаговой отладке все функции срабатывают (по таймер в том числе), дерево все равно не выводится... (((
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.1084 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.