Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Как корректно вывести собщение JOptionPane? / 5 сообщений из 5, страница 1 из 1
11.09.2006, 15:16:46
    #33978309
*
*
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как корректно вывести собщение JOptionPane?
Сообщение нужно выдавать из обработчиков событий, в частности из ChangeListener'а JScrollBar'а. При этом сам ScrollBar остается в некорректном состоянии (нажата кнопка, что приводит к зацикливанию). Следующий код перед открытием диалога вроде бы решает вопрос:

Код: plaintext
1.
2.
MouseEvent      me =  new  MouseEvent(c, MouseEvent.MOUSE_RELEASED,  0 , MouseEvent.BUTTON1_MASK, - 1 , - 1 ,  0 , false, MouseEvent.BUTTON1);
c.dispatchEvent(me); // c - ссылка на Frame, к которому привязан диалог

Есть более правильный способ?
...
Рейтинг: 0 / 0
12.09.2006, 15:51:53
    #33981404
peter6636
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как корректно вывести собщение JOptionPane?
*Сообщение нужно выдавать из обработчиков событий, в частности из ChangeListener'а JScrollBar'а. При этом сам ScrollBar остается в некорректном состоянии (нажата кнопка, что приводит к зацикливанию). Следующий код перед открытием диалога вроде бы решает вопрос:

Код: plaintext
1.
2.
MouseEvent      me =  new  MouseEvent(c, MouseEvent.MOUSE_RELEASED,  0 , MouseEvent.BUTTON1_MASK, - 1 , - 1 ,  0 , false, MouseEvent.BUTTON1);
c.dispatchEvent(me); // c - ссылка на Frame, к которому привязан диалог

Есть более правильный способ?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 try {
 .........
} catch (Exception e){
   showMessage(e.toString());
}

..............

 public   void  showMessage(String mes){
    JOptionPane.shoMessageDialog( this ,mess);
 }
...
Рейтинг: 0 / 0
13.09.2006, 14:05:48
    #33984084
*
*
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как корректно вывести собщение JOptionPane?
Не понял, при чем здесь обработка исключений?
...
Рейтинг: 0 / 0
13.09.2006, 21:06:35
    #33985521
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как корректно вывести собщение JOptionPane?
peter6636Есть более правильный способ?
Думаю, более правильным способом будет SwingWorker.invokeLater(). Насколько я понимаю идеологию listener-ов, делать в них что-то мало-мальски долгое (а вывод модального окна - безусловно долгая операция) принципиально неверно.

Лично я пришел к следующей системе: я сделал класс Action, основная функция которого - реализовывать стандартные обертки над собственно функциональным кодом: отлов исключений, модификацию статусбаров, вывод прогрессбара итп. В том числе любой его наследник может поставить признак выполнения в отдельном потоке, в том числе результатом работы action-а может быть окно, которое следует вывести.

Что же до listener-ов, то я сделал набор переходников - классов вида

Код: plaintext
 class  WindowActionListener  extends  Action  implements  WindowListener

В результате разработка изрядно упростилась - любое функциональное действие, которое мог вызвать пользователь, кодировалось однотипно, легко подставлялось в любое место итп.
...
Рейтинг: 0 / 0
15.09.2006, 15:30:33
    #33990672
*
*
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как корректно вывести собщение JOptionPane?
Возможно, я чего-то не понимаю. Вот упрощенный фрагмент кода:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
JScrollBar sb =  new  JScrollBar();
sb.setSize    ( 20 ,  200 );
sb.setLocation( 20 ,   20 );

sb.getModel().addChangeListener( new  ChangeListener()
{
   public   void  stateChanged(ChangeEvent ce)
  {
    SwingUtilities.invokeLater
    (
       new  Thread()
      {
         public   void  run()
        {
          JOptionPane.showMessageDialog(Test. this , "Message");
        }
      }
    );
  }
});
При нажатии мышью на кнопку JScrollBar'а появляется диалог, но кнопра остается нажатой и программа зацикливается. И еще, что такое SwingWorker и где его искать?
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Как корректно вывести собщение JOptionPane? / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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