2009-11-12 4 views
2

У меня есть приложение, которое работает в полноэкранном режиме и работает нормально. Теперь мне нужно добавить простой, неразделенный диалог, и у меня проблемы. Если я запустил приложение с максимальным, но не в полноэкранном режиме, диалоговое окно отобразится и будет функционировать должным образом. Когда я вернусь в полноэкранный режим, диалоговое окно не будет отображаться.JDialog не отображается в полноэкранном режиме

Диалог расширяет JDialog и содержит только JSlider и пару кнопок. Он не декорирован и не мода. (Я отключил модальность для тестирования - это было болью, чтобы заставить выход из приложения каждый раз, когда диалог заблокировал вход.) Я вхожу в полноэкранный режим, используя setFullScreenWindow(), передавая в основном JFrame для приложения. Это не имеет значения, если я установил этот JFrame как владелец JDialog или нет. Не похоже, что это поможет, если я вызову toFront() в диалоговом окне.

Диалог, кажется, активен - тем более, что он блокирует ввод, если я делаю его модальным, но просто не отображается или не скрывается. Итак, есть ли очевидный трюк для отображения JDialog в полноэкранном режиме? Что-то, что я мог бы игнорировать или опускать?

Если нет очевидного решения, я могу опубликовать код позже. К сожалению, сейчас у меня нет времени.

+0

Uh oh. Это не сулит мне ничего: «Windows не может перекрывать полноэкранное окно. Все остальные окна приложений всегда будут отображаться под полноэкранным окном в Z-порядке». Из API для GraphicsDevice: http://java.sun.com/j2se/1.4.2/docs/api/java/awt/GraphicsDevice.html#setFullScreenWindow%28java.awt.Window%29 – Clayton

ответ

2

И в самом деле, поскольку M1EK ссылается на его ответ, и я упомянул в комментарии, приложения Java в полноэкранном режиме не позволят другим окнам показывать их. Javadoc API for GraphicsDevice гласит:

Windows не может пересекать полноэкранное окно. Все остальные окна приложений всегда отображаются под полноэкранным окном в Z-порядке.

В конце концов, я переконфигурировал приложение так, чтобы он не перешел в полноэкранный режим, пока бит немного позже. Это все еще дает мне довольно классную презентацию в начале и позволяет моему JDialog функционировать должным образом. Переход в полноэкранный режим выполняется быстро и плавно, даже в «середине» моего приложения.

1

Вы действительно хотите быть в полноэкранном режиме для этого приложения? Это скорее игровая функция - чтобы получить более прямой доступ к фрейму-буфере, я всегда думал. Вы читали этот учебник:

http://java.sun.com/docs/books/tutorial/extra/fullscreen/index.html

Действительно, мне кажется, не быть лучшим выбором для свинг приложения с дочерними окнами.

+1

Хороший материал, о котором нужно думать, но, да, полноэкранный режим является обязательным, согласно спецификации клиента. Этот диалог будет единственным дочерним окном, поэтому он не является действительно сложным. – Clayton

+0

В настоящее время обязательно для моей спецификации клиента.Если вы работаете в какой-либо производственной среде, это полезно для добавления в панель инструментов. – davidahines

5

JOptionPane.showInternalXXXDialog() методы визуализируют диалоги как JInternalFrames. Возможно, вы могли бы использовать JIternaFrame для имитации диалогового окна.

+0

Работал красиво для меня. – davidahines

1

Попробуйте нас это. Это не эксклюзивный полноэкранный режим, но он достаточно близко.

setExtendedState(JFrame.MAXIMIZED_BOTH); 
setUndecorated(true); 
Смежные вопросы