powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Как корректно вывести собщение JOptionPane?
5 сообщений из 5, страница 1 из 1
Как корректно вывести собщение JOptionPane?
    #33978309
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
Сообщение нужно выдавать из обработчиков событий, в частности из 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
Как корректно вывести собщение JOptionPane?
    #33981404
Фотография peter6636
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
*Сообщение нужно выдавать из обработчиков событий, в частности из 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
Как корректно вывести собщение JOptionPane?
    #33984084
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
Не понял, при чем здесь обработка исключений?
...
Рейтинг: 0 / 0
Как корректно вывести собщение JOptionPane?
    #33985521
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
peter6636Есть более правильный способ?
Думаю, более правильным способом будет SwingWorker.invokeLater(). Насколько я понимаю идеологию listener-ов, делать в них что-то мало-мальски долгое (а вывод модального окна - безусловно долгая операция) принципиально неверно.

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

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

Код: plaintext
 class  WindowActionListener  extends  Action  implements  WindowListener

В результате разработка изрядно упростилась - любое функциональное действие, которое мог вызвать пользователь, кодировалось однотипно, легко подставлялось в любое место итп.
...
Рейтинг: 0 / 0
Как корректно вывести собщение JOptionPane?
    #33990672
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
Возможно, я чего-то не понимаю. Вот упрощенный фрагмент кода:
Код: 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
5 сообщений из 5, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Как корректно вывести собщение JOptionPane?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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