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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Progress Bar, перерисовка 
V
    Опции темы
Filin88
  Дата 1.10.2008, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Есть несколько "плотных" циклов, которые нужно отобразить в одном баре. В итоге он не перерисовывается, и в конце цикла показывается сразу полная шкала. Они просто задавливают это отображение. Я не понимаю как это исправить. Были похожие темы, но конкретного ответа дано не было, тока грызлись между собой. И все же, как реализовать это дело с плотными циклами?
PM MAIL   Вверх
Старовъръ
Дата 1.10.2008, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



1. Что такое плотные циклы?
2. Тут дело без потоков не обойдется. Сначала твой класс для перерисовки реализовывает интерфейс Runnable, в методе run() запускается хотябы repaint(), ну это на свое усмотрение. Но главное, что расчеты делаются в отдельном потоке, и после очередной итерации цикла вызывается метод SwingUtilities.invokeLater(), который будет напоминать GUI, чтоб тот перерисовался(т.е. будет вызываться описанный выше поток).
PM MAIL WWW   Вверх
Filin88
Дата 11.10.2008, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Вроде сделал как говорил, но тут либо ничего либо полная шкала сразу. 

Код

    NewThread obj1 = new NewThread("1");
    NewThread obj2 = new NewThread("2");
    NewThread obj3 = new NewThread("3");    
    NewThread obj4 = new NewThread("4");    
    NewThreadPB pbOBJ1 = new NewThreadPB("25");
    NewThreadPB pbOBJ2 = new NewThreadPB("50");
    NewThreadPB pbOBJ3 = new NewThreadPB("75");
    NewThreadPB pbOBJ4 = new NewThreadPB("100");
    
    pb.setValue(0);
    obj1.t.start();
    try {
        obj1.t.sleep(500);
    } catch (InterruptedException e2) {
        // TODO Auto-generated catch block
        e2.printStackTrace();
    }
    SwingUtilities.invokeLater(pbOBJ1);
    

    
    pb.setValue(25);
    obj2.t.start();    
    try {
        obj2.t.sleep(500);
    } catch (InterruptedException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
    SwingUtilities.invokeLater(pbOBJ2);
    
    pb.setValue(50);
    obj3.t.start();    
    try {
        obj3.t.sleep(500);
    } catch (InterruptedException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
    SwingUtilities.invokeLater(pbOBJ3);
    
    pb.setValue(75);
    obj4.t.start();    
    try {
        obj4.t.sleep(500);
    } catch (InterruptedException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
    SwingUtilities.invokeLater(pbOBJ4);
    
    pb.setValue(100);


NewThread - это класс операции связанных с выборкой из БД

Код

class NewThreadPB implements Runnable
{
    Thread t;
    NewThreadPB(String value)
    {
        t = new Thread(this,value);
        
    }
    
    public void run() 
    {
        Index.pb.repaint();
        
    }

}

Ну а это поток с обновлением. pb- прогресс бар. Я что-то не так написал?

PM MAIL   Вверх
Старовъръ
Дата 12.10.2008, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Вобщем смотри здесь.
PM MAIL WWW   Вверх
Filin88
Дата 13.10.2008, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



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

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

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


 




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


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

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