JavaFX Java17 - 退出全屏事件
JavaFX Java17 - exit Fullscreen Event
我在我的应用程序中添加了一个自定义工具栏(放置我的 window 操作的地方)。到目前为止一切正常。与 window 处理相关 我正在寻找 possibility 来处理“fullscreen got closed”事件。设想:
应用程序以 windowed 模式启动 -> 用户单击(自定义)工具栏按钮进入全屏。工具栏现在将其可见性设置为 false。用户现在通过按钮退出全屏模式(本机 macOS 按钮退出全屏)--> 我现在需要对此做出反应(将工具栏再次设置为可见)但找不到方法。
main.java
MainController mc = new MainController();
Parent root = FXMLLoader.load(getClass().getResource("welcome-view.fxml"));
stage.initStyle(StageStyle.TRANSPARENT);
mc.doSwitchScenes(stage, root);
stage.show();
MainController.java
...
private String title = "Project Apollo";
private Color fillColor = TRANSPARENT;
private int minWidth = 800;
private int minHeight = 600;
...
public void btnMinimize(MouseEvent mouseEvent) {
Stage stage = (Stage)((Circle)mouseEvent.getSource()).getScene().getWindow();
// is stage minimizable into task bar. (true | false)
stage.setIconified(true);
};
public void btnCloseApp(MouseEvent mouseEvent) {
Platform.exit();
System.exit(0);
}
public void btnFullscreen(MouseEvent mouseEvent) {
Stage stage = (Stage)((Circle)mouseEvent.getSource()).getScene().getWindow();
stage.setFullScreen(true);
Scene actualScene = ((Node)mouseEvent.getSource()).getScene();
Parent hbc = (Parent) actualScene.lookup("#headerBarContainer");
if(hbc != null){
hbc.setVisible(false);
}
System.out.println("clicked FS");
}
...
关键是至少在 MacOS 上 window 有其原生的 os 控件来退出全屏 - 它是 pos 可以针对此事件还是至少更改也许是舞台尺寸?
收听 stage.fullScreenProperty()
并响应更改:
stage.fullScreenProperty().addListener((ChangeListener) (obs,oldValue,newValue) ->
{/*TODO respond to changes in full screen */;});
我在我的应用程序中添加了一个自定义工具栏(放置我的 window 操作的地方)。到目前为止一切正常。与 window 处理相关 我正在寻找 possibility 来处理“fullscreen got closed”事件。设想: 应用程序以 windowed 模式启动 -> 用户单击(自定义)工具栏按钮进入全屏。工具栏现在将其可见性设置为 false。用户现在通过按钮退出全屏模式(本机 macOS 按钮退出全屏)--> 我现在需要对此做出反应(将工具栏再次设置为可见)但找不到方法。
main.java
MainController mc = new MainController();
Parent root = FXMLLoader.load(getClass().getResource("welcome-view.fxml"));
stage.initStyle(StageStyle.TRANSPARENT);
mc.doSwitchScenes(stage, root);
stage.show();
MainController.java
...
private String title = "Project Apollo";
private Color fillColor = TRANSPARENT;
private int minWidth = 800;
private int minHeight = 600;
...
public void btnMinimize(MouseEvent mouseEvent) {
Stage stage = (Stage)((Circle)mouseEvent.getSource()).getScene().getWindow();
// is stage minimizable into task bar. (true | false)
stage.setIconified(true);
};
public void btnCloseApp(MouseEvent mouseEvent) {
Platform.exit();
System.exit(0);
}
public void btnFullscreen(MouseEvent mouseEvent) {
Stage stage = (Stage)((Circle)mouseEvent.getSource()).getScene().getWindow();
stage.setFullScreen(true);
Scene actualScene = ((Node)mouseEvent.getSource()).getScene();
Parent hbc = (Parent) actualScene.lookup("#headerBarContainer");
if(hbc != null){
hbc.setVisible(false);
}
System.out.println("clicked FS");
}
...
关键是至少在 MacOS 上 window 有其原生的 os 控件来退出全屏 - 它是 pos 可以针对此事件还是至少更改也许是舞台尺寸?
收听 stage.fullScreenProperty()
并响应更改:
stage.fullScreenProperty().addListener((ChangeListener) (obs,oldValue,newValue) ->
{/*TODO respond to changes in full screen */;});