Как обрабатывать JDialog, открытый после setVisible (false)?

Это сценарий:

  • добавить обработчик windowOpened() в новый экземпляр JDialog
  • показать диалог в первый раз, используя jdialog.setVisible(true)
  • как и ожидалось: запущен обработчик windowOpened()
  • jdialog.setVisible (ложь)
  • jdialog.setVisible (истина)
  • ожидалось, но не произошло: сработал обработчик windowOpened()

Как мне справиться с ситуацией, когда мой модальный диалог появлялся на экране всякий раз, когда я в первый раз или в последующие разы вызывал setVisible(true)?


person Sergey Karpushin    schedule 25.04.2013    source источник
comment
возможный дубликат JPanel, какой из прослушивателей является правильным для видимости изменено   -  person Duncan Jones    schedule 25.04.2013
comment
Что ж... ссылка полезная, спасибо. Но это не дубликат, так как мой вопрос касается именно JDialog, а не чего-то, что является подклассом JComponent.   -  person Sergey Karpushin    schedule 25.04.2013
comment
Я посчитал это дубликатом, потому что ваш вопрос является подмножеством того, на который я ссылался. В любом случае, рад, что у вас есть ответ.   -  person Duncan Jones    schedule 25.04.2013


Ответы (1)


Как мне справиться с ситуацией, когда мой модальный диалог появлялся на экране всякий раз, когда я в первый раз или в последующие разы вызывал setVisible(true)?

  • должны использовать ComponentListener и переопределять методы componentHidden() и componentShown()

  • JComponent должен возвращать true из isDisplayable()

  • подробнее здесь

person mKorbel    schedule 25.04.2013
comment
Вы очень быстро =) Спасибо! - person Sergey Karpushin; 25.04.2013