Полноэкранный эксклюзивный режим JavaFX
Я делаю JavaFX-приложение для киосков, которое должно полностью контролировать экран и запрещать закрытие, сворачивание и некоторые нажатия клавиш. Мне было интересно, есть ли способ заставить приложение JavaFX работать в полноэкранном монопольном режиме, если нет альтернативы, которые могли бы достичь той же цели. Я пытался с помощью:
stage.setFullScreen(true);
который успешно делает приложение полноэкранным, однако пользователь все равно может выйти из приложения или выйти из полноэкранного режима.
3 ответа
У меня недавно была такая же проблема, надеюсь, вы ее разобрались (я бы не стал ждать 4 года).
Если не:
Прежде чем позвонить stage.show()
тебе нужно позвонить setFullScreenExitKeyCombination
и передать KeyCombination.NO_MATCH
как единственный параметр.
так например...
stage.setFullScreenExitKeyCombination(KeyCombination.NO_MATCH);
stage.show()
Обрабатывать близкие события.
следующий код может помочь!
// Установить платформу params Platform.setImplicitExit(false);
primaryStage.setOnCloseRequest(new EventHandler<WindowEvent>() {
@Override
public void handle(WindowEvent event) {
// deque it
event.consume();
}
});
Это предотвратит закрытие и отключение полноэкранного режима с помощью ESC (но все же оставит вам черный ход для удаления полноэкранного режима - Shift+PAUSE или F13):
scene.setOnKeyPressed((event) ->
{
if (event.getCode() == KeyCode.PAUSE && event.isShiftDown())
stage.setFullScreen(!stage.isFullScreen());
});
stage.setOnCloseRequest(Event::consume);
stage.setFullScreenExitKeyCombination(new KeyCodeCombination(KeyCode.F13));
Чтобы закрыть ваше приложение, вам нужно добавить Platform.exit()
по какой-то команде.