2013-07-15 44 views
0

我創造了這個代碼基礎上的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); 

我需要通過使用中,我想設置的文字和setFullScreen switch語句來改善它。有沒有更好的方法來實現這一點?

編輯:此代碼工作,但實施是非常醜陋的。

回答

3
  1. 檢查實際狀態而不是文本
  2. 使用綁定更新的文字,你會不會需要關心的初始化和全屏模式下通過其他方法改變

    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()); 
        } 
    });