У меня есть приложение, которое устанавливает полноэкранный кадр, но, похоже, сворачивает его при включении заставки. Я хочу, чтобы это приложение было единственным приложением, которое могут использовать пользователи киосков с сенсорным экраном, так что это проблема. Есть ли способ предотвратить это?
Полноэкранное Java-приложение сворачивается при включении заставки
Ответы (3)
Другой способ - добавить прослушиватель окон и сбросить состояние, когда он деактивирован:
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowDeactivated(WindowEvent e) {
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
// or go to fullscreen mode here
}
});
Но лучше всего для начала отключить заставку.
Интернет говорит, что межплатформенный способ добиться этого — запланировать события клавиатуры с помощью этого кода:
import java.awt.Robot;
public void disableScreenSaver() throws AWTException {
Robot r = new Robot();
r.waitForIdle();
r.keyPress(KeyEvent.VK_CONTROL);
r.keyRelease(KeyEvent.VK_CONTROL);
}
и запланировать его запуск каждые пару минут (например, с thread.sleep();
). Таким образом, экранная заставка не появится.
Однако я понятия не имею о нехакерском кроссплатформенном решении, и я был бы очень рад увидеть его от кого-то, кто его знает :)
thread.sleep();
в одном потоке в цикле. Вместо этого используйте ScheduledExecutorService
.
- person Simon Forsberg; 11.03.2014
Вероятно (не пробовал!) Вы получите ответ, объединив ответы на эти вопросы:
Вызов метода Win32 API из Java
Необходимо отключить экранную заставку/экран блокировка в Windows C#/.Net
Конечно, это работает только в Windows, поэтому я спросил вас о вашей ОС :)