Java 实现切换全屏菜单项

Java 实现切换全屏菜单项,java,javafx-2,javafx,javafx-8,Java,Javafx 2,Javafx,Javafx 8,我根据JavaFX教程创建了以下代码: final String change[] = { "Full Screen", "Exit Full Screen" }; final MenuItem fullScreen = MenuItemBuilder.create().text(change[0]).build(); fullScreen.setOnAction(new EventHandler<ActionEvent>()

我根据JavaFX教程创建了以下代码:

    final String change[] =
    {
        "Full Screen", "Exit Full Screen"
    };
    final MenuItem fullScreen = MenuItemBuilder.create().text(change[0]).build();

    fullScreen.setOnAction(new EventHandler<ActionEvent>()
    {
        @Override
        public void handle(ActionEvent e)
        {
            fullScreen.setText((fullScreen.getText().equals(change[0])) ? change[1] : change[0]);

            if (fullScreen.getText().equals(change[0]))
            {
                primaryStage.setFullScreen(false);
            }
            else
            {
                primaryStage.setFullScreen(true);
            }
        }
    });

    view.getItems().add(fullScreen);
最终字符串更改[]=
{
“全屏”,“退出全屏”
};
final MenuItem fullScreen=MenuItemBuilder.create().text(更改[0]).build();
fullScreen.setOnAction(新的EventHandler()
{
@凌驾
公共无效句柄(ActionEvent e)
{
fullScreen.setText((fullScreen.getText().equals(change[0]))?change[1]:change[0]);
if(fullScreen.getText().equals(更改[0]))
{
primaryStage.setFullScreen(假);
}
其他的
{
primaryStage.setFullScreen(真);
}
}
});
view.getItems().add(全屏);
我需要通过使用switch语句来改进它,我想在其中设置文本和
setFullScreen
。有没有更优雅的方法来实现这一点

编辑:这段代码可以工作,但是实现非常糟糕

  • 检查真实状态,而不是文本
  • 使用绑定来更新文本,您将不需要关心初始化和被其他方法更改的全屏模式

    MenuItem fullScreen = new MenuItem();
    
    fullScreen.textProperty().bind(
         new When(primaryStage.fullScreenProperty())
              .then("Exit Full Screen")
              .otherwise("Full Screen"));
    
    fullScreen.setOnAction(new EventHandler<ActionEvent>() {
        @Override
        public void handle(ActionEvent event) {
            primaryStage.setFullScreen(!primaryStage.isFullScreen());
        }
    });
    
    MenuItem fullScreen=new MenuItem();
    fullScreen.textProperty().bind(
    新建时间(primaryStage.fullScreenProperty())
    。然后(“退出全屏”)
    。否则(“全屏”);
    fullScreen.setOnAction(新的EventHandler(){
    @凌驾
    公共无效句柄(ActionEvent事件){
    primaryStage.setFullScreen(!primaryStage.isFullScreen());
    }
    });
    
  • 检查真实状态,而不是文本
  • 使用绑定来更新文本,您将不需要关心初始化和被其他方法更改的全屏模式

    MenuItem fullScreen = new MenuItem();
    
    fullScreen.textProperty().bind(
         new When(primaryStage.fullScreenProperty())
              .then("Exit Full Screen")
              .otherwise("Full Screen"));
    
    fullScreen.setOnAction(new EventHandler<ActionEvent>() {
        @Override
        public void handle(ActionEvent event) {
            primaryStage.setFullScreen(!primaryStage.isFullScreen());
        }
    });
    
    MenuItem fullScreen=new MenuItem();
    fullScreen.textProperty().bind(
    新建时间(primaryStage.fullScreenProperty())
    。然后(“退出全屏”)
    。否则(“全屏”);
    fullScreen.setOnAction(新的EventHandler(){
    @凌驾
    公共无效句柄(ActionEvent事件){
    primaryStage.setFullScreen(!primaryStage.isFullScreen());
    }
    });