Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / SWING - непонятки с ProgressMonitor / 8 сообщений из 8, страница 1 из 1
13.04.2007, 10:04:56
    #34458257
Alexey Tomin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SWING - непонятки с ProgressMonitor
Добрый день!

Не могу понять, как работать с ProgressMonitor.
Пишу такой код:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
    monitor =  new  ProgressMonitor( CRoot.getMainForm(), 
        "Выполнение синхронизации",  null ,  0 ,  200  );
    CSynchronizer sync =  new  CSynchronizer(); // это Runnable
    Thread syncThread =  new  Thread( sync );
    syncThread.start();
     while ( ! sync.isDone()){
       try {
        Thread.sleep(  500  );
        monitor.setProgress( sync.getState());
      } catch ( InterruptedException e ){
         break ;
      }
    }
    monitor.close();

Соответственно CSynchronizer сообщает об окончании работы через isDone() и о шагах работы через getState(). Но вот беда- окошко остаётся пустым, даже без текста.
Что здесь не так? Хорстмана читал, то ли не понял, то ли еще чего...

--
Алексей.
...
Рейтинг: 0 / 0
13.04.2007, 10:14:52
    #34458290
zalexaka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SWING - непонятки с ProgressMonitor
...
Рейтинг: 0 / 0
13.04.2007, 11:36:27
    #34458635
GKS_Samara
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SWING - непонятки с ProgressMonitor
zalexaka пишет:

> может EventQueue::invokeLater(Runnable runnable)

В каком месте его использовать? Для создания окна или что?

--
Алексей
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
13.04.2007, 11:43:53
    #34458659
Timm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SWING - непонятки с ProgressMonitor
...
Рейтинг: 0 / 0
13.04.2007, 12:05:14
    #34458745
GKS_Samara
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SWING - непонятки с ProgressMonitor
Timm пишет:

> http://java.sun.com/docs/books/tutorial/uiswing/components/examples/ProgressMonitorDemo.java

Это несколько не то- мне не надо в фоне работать.
Во время этой операции работать нельзя.
Надо просто, чтобы пользователь не паниковал, а видел процесс работы.

--
Алексей
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
13.04.2007, 12:25:11
    #34458820
Timm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SWING - непонятки с ProgressMonitor
Показывай модальный диалог.
...
Рейтинг: 0 / 0
13.04.2007, 12:29:21
    #34458842
Guest1234567890
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SWING - непонятки с ProgressMonitor
Alexey TominДобрый день!

Не могу понять, как работать с ProgressMonitor.
Пишу такой код:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
     while ( ! sync.isDone()){
       try {
        Thread.sleep(  500  );
        monitor.setProgress( sync.getState());
      } catch ( InterruptedException e ){
         break ;
      }
    }


Но вот беда- окошко остаётся пустым, даже без текста.
Что здесь не так? Хорстмана читал, то ли не понял, то ли еще чего...


А кто по вашему будет перерисовывать это окно, если вы блокируете этим кодом поток Swing'а? Заблокируйте вручную все, что нельзя использовать на время выполнения потока, а по завершении его разблокируйте. Окно с прогрессом подпишите на событие CSynchronizer'а об изменении состояния. В функции, принимающей вызовы этого события прогресс бар надо обновлять через invokeLater. Будет намного более понятный и быстрый код.
...
Рейтинг: 0 / 0
13.04.2007, 13:43:06
    #34459185
GKS_Samara
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SWING - непонятки с ProgressMonitor
Guest1234567890 пишет:

> А кто по вашему будет перерисовывать это окно, если вы блокируете этим
> кодом поток Swing'а?

Понял.
Убрал всё, что за
syncThread.start();
а в потоке делаю так

EventQueue.invokeLater( informer );

где вызываю

monitor.setProgress( ++state );

Теперь окошко хорошо рисуется, но прогресса нет.
М.б. надо кроме setProgress ещё что-то звать? Или зарание что-то делать?

--
Алексей
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / SWING - непонятки с ProgressMonitor / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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