【问题标题】:How to lock JavaFX fullscreen mode?如何锁定 JavaFX 全屏模式?
【发布时间】:2017-01-01 22:34:35
【问题描述】:

我目前正在开发一个志愿者登录应用程序,并且需要防止任何篡改计算机的企图。首先,我将应用程序设置为全屏,这很容易。然后我尝试将窗口的退出键组合设置为空,但在这种情况下,JavaFX 自动默认为转义键。我将有一个管理部分,可以使用密码退出程序。有什么方法可以有效地拦截退出 JavaFX 应用程序全屏状态的任何可能方法,或者——更好的是——暂时挂起/锁定其他操作系统功能?

编辑--使用 KeyCombination.NO_MATCH,我阻止用户退出全屏。然而,操作系统仍然完全可以使用标准组合键退出,或者在 OS X 的情况下,只需将鼠标移动到屏幕顶部并使用程序菜单退出。

【问题讨论】:

标签: java javafx fullscreen


【解决方案1】:

我错过了什么?我认为它的奶酪.. 像这样

primaryStage.fullScreenProperty().addListener(new ChangeListener<Boolean>() {

        @Override
        public void changed(ObservableValue<? extends Boolean> observable,
                Boolean oldValue, Boolean newValue) {
            if(newValue != null && !newValue.booleanValue())
                primaryStage.setFullScreen(true);
        }
    });

全屏没人脾气,直到用户按下 开始 按钮来遮挡 UI 你可以阻止这种情况 - 但我建议只有在你即将关闭你的电脑

new Thread(new Runnable() {
        @Override
        public void run() {
            while(true){
               //in my initial try i didn't add sleep, 
               //and i ended up,turning off the pc,lost this post for a while
                try {
                    Thread.sleep(100); //buy little millieseconds
                } catch (InterruptedException e) {}

                Platform.runLater(()->{
                    primaryStage.toFront();
                    //bring your UI on top of everyone
                });
            }

        }
    }).start();

primaryStage 是你的Stage

希望它是你想要的

【讨论】:

  • 谢谢!这太完美了,特别是因为它可以在所有平台上运行,而且我不必搞乱启动设置。
  • 第二个可以用alt+tab,但是不能用windows键。附:我使用java.util.Timerjava.util.TimerTask 来执行此操作,因为这比这样的无限循环要好。如果您对此感兴趣,请访问java.util.Timerjava.util.TimerTask 的Javadoc。
【解决方案2】:

primaryStage.setFullScreenExitKeyCombination(KeyCombination.NO_MATCH);

【讨论】:

  • 你应该更详细地解释这如何帮助这个问题
  • 这对 OP 没有帮助,因为 OP 已经尝试过此代码。
猜你喜欢
  • 1970-01-01
  • 2019-07-23
  • 1970-01-01
  • 2016-06-10
  • 1970-01-01
  • 1970-01-01
  • 2012-12-13
  • 1970-01-01
  • 2014-12-15
相关资源
最近更新 更多