如何锁定 JavaFX 全屏模式?
How to lock JavaFX fullscreen mode?
我目前正在开发一个志愿者登录应用程序,需要防止任何篡改计算机的企图。一开始,我很容易地将应用程序设置为全屏。然后我尝试将 window 的退出键组合设置为 null,但在这种情况下,JavaFX 会自动默认为转义键。我将有一个管理部分,可以在其中使用密码退出程序。有什么方法可以有效地拦截任何可能退出 JavaFX 应用程序全屏状态的方法,或者——更好的是——暂时 suspend/lock 其他 OS 函数?
编辑--使用KeyCombination.NO_MATCH,我阻止用户退出全屏。然而,OS 仍然完全能够使用标准组合键退出,或者在 OS X 的情况下,只需将鼠标移动到屏幕顶部并使用程序菜单退出即可。
我是不是漏了什么?我认为它的奶酪..
像这样
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
希望是你想要的
primaryStage.setFullScreenExitKeyCombination(KeyCombination.NO_MATCH);
我目前正在开发一个志愿者登录应用程序,需要防止任何篡改计算机的企图。一开始,我很容易地将应用程序设置为全屏。然后我尝试将 window 的退出键组合设置为 null,但在这种情况下,JavaFX 会自动默认为转义键。我将有一个管理部分,可以在其中使用密码退出程序。有什么方法可以有效地拦截任何可能退出 JavaFX 应用程序全屏状态的方法,或者——更好的是——暂时 suspend/lock 其他 OS 函数?
编辑--使用KeyCombination.NO_MATCH,我阻止用户退出全屏。然而,OS 仍然完全能够使用标准组合键退出,或者在 OS X 的情况下,只需将鼠标移动到屏幕顶部并使用程序菜单退出即可。
我是不是漏了什么?我认为它的奶酪.. 像这样
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
希望是你想要的
primaryStage.setFullScreenExitKeyCombination(KeyCombination.NO_MATCH);