JDialog не отображается в полноэкранном режиме - PullRequest
2 голосов
/ 12 ноября 2009

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

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

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

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

Ответы [ 4 ]

5 голосов
/ 22 сентября 2010

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

2 голосов
/ 14 ноября 2009

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

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

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

1 голос
/ 07 февраля 2012

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

setExtendedState(JFrame.MAXIMIZED_BOTH);
setUndecorated(true);
1 голос
/ 12 ноября 2009

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

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

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

...