Полноэкранный эксклюзивный режим 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() по какой-то команде.

Другие вопросы по тегам