Как запрограммировать полноэкранный режим на Java?
-
02-07-2019 - |
Вопрос
Я бы хотел, чтобы в моем приложении был полноэкранный режим.Какой самый простой способ сделать это, нужна ли мне для этого сторонняя библиотека или в JDK есть что-то, что уже предлагает это?
Решение
Попробуйте API Полноэкранного Эксклюзивного режима.Он был представлен в JDK в выпуске 1.4.Некоторые из этих функций включают в себя:
- Полноэкранный Эксклюзивный режим - позволяет приостановить работу оконной системы, чтобы можно было выводить рисунок непосредственно на экран.
- Режим отображения - состоит из размера (ширина и высота монитора в пикселях), разрядности (количество бит на пиксель) и частоты обновления (частота обновления самого монитора).
- Пассивный противАктивный Рендеринг - рисование во время выполнения основного цикла событий с использованием метода paint является пассивным, в то время как рендеринг в вашем собственном потоке активен.
- Двойная Буферизация и перелистывание страниц - Более плавное рисование означает лучшую воспринимаемую производительность и гораздо лучший пользовательский опыт.
- Стратегия буферизации и буферные возможности - классы, которые позволяют вам рисовать на поверхностях и компонентах без необходимости знать количество используемых буферов или технику, используемую для их отображения, и помогают вам определить возможности вашего графического устройства.
В приведенном по ссылке руководстве приведено несколько примеров полноэкранного эксклюзивного режима.
Другие советы
JFrame setUndecorated(true)
способ
Я сделал это с помощью JOGL, когда у меня был полноэкранный пользовательский интерфейс OpenGL для игры.Это довольно просто.Я полагаю, что эта возможность была добавлена и в Java с версией 5, но это было так давно, что я забыл, как это сделать (редактировать:смотрите ответ выше о том, как это сделать).
Используйте этот код:
JFrame frame = new JFrame();
// set properties
frame.setSize(Toolkit.getDefaultToolkit().getScreenSize());
frame.setUndecorated(true);
frame.setVisible(true);
Убедитесь, что setUndecorated()
приходит раньше setVisible()
или это не сработает.
Это действительно зависит от того, что вы используете для отображения своего интерфейса, т.е.AWT /Spring или OpenGL и т.д.
Java имеет полноэкранный эксклюзивный режим API - смотрите это руководство от Sun.