2016-07-26 3 views
0

最新のJDK:1.8.0_102で動作していますが、1.8.0_45でも動作しませんでした。 問題を再現する簡単なプログラムです。再現する手順:JavaFX Stage.setMaximizedはMac OSX(10.9.5)で一度しか動作しません

  1. 実行プログラム
  2. 最大化(それは正しく最大化されます)
  3. クリックして(それは正しく「unmaximize」意志)[復元]をクリックします
  4. は(それは何もしません)もう一度最大化をクリックします。

    import javafx.application.Application; 
    import javafx.event.ActionEvent; 
    import javafx.event.EventHandler; 
    import javafx.scene.Scene; 
    import javafx.scene.control.Button; 
    import javafx.scene.layout.VBox; 
    import javafx.stage.Stage; 
    
    public class TestApplication extends Application { 
    
    @Override 
    public void start(Stage primaryStage) throws Exception { 
        VBox pane = new VBox(); 
        Button maximizeButton = new Button("Maximize"); 
        pane.getChildren().add(maximizeButton); 
        Button restoreButton = new Button("Restore"); 
        pane.getChildren().add(restoreButton); 
    
        maximizeButton.setOnAction(new EventHandler<ActionEvent>() { 
         @Override 
         public void handle(ActionEvent event) { 
          primaryStage.setMaximized(true); 
         } 
        }); 
    
        restoreButton.setOnAction(new EventHandler<ActionEvent>() { 
         @Override 
         public void handle(ActionEvent event) { 
          primaryStage.setMaximized(false); 
         } 
        }); 
    
        primaryStage.setScene(new Scene(pane)); 
        primaryStage.show(); 
    } 
    
    public static void main(String[] args) { 
        launch(args); 
    } 
    } 
    

答えて

0

それが再び働くことができる前に最大化をfalseに設定する必要があります!ステージをアイコン化したら、maximizeをfalseに設定してみてください。 maximizeがすでにtrueに設定されている場合、何も起こりません。お役に立てれば!

example!! 


public static void maximize() { 
     if (!stage.isMaximized()) { 
      stage.setWidth(Utils.WIDTH); 
      stage.setHeight(Utils.HEIGHT); 
      stage.setX(0); 
      stage.setY(0); 
      stage.setMaximized(true); 
     } 
     else { 
      if (stage.getX() != 0 && stage.getY() != 0) { 
       stage.setWidth(Utils.WIDTH); 
       stage.setHeight(Utils.HEIGHT); 
       stage.setX(0); 
       stage.setY(0); 
      } 
      else if (stage.getX() == 0 && stage.getY() == 0) { 
       stage.setMaximized(false); 
       stage.setWidth(Utils.WIDTH * .8); 
       stage.setHeight(Utils.HEIGHT * .8); 
       stage.setX(200); 
       stage.setY(85); 
      } 
     } 
    } 

    public static void minimize() { 
     stage.setIconified(true); 
    } 
+0

私は、復元するステップの一部であったrestoreButton.setOnActionでsetMaximized(false)を呼び出します。私は何か違うことをすべきか? –

+0

@EricS。私は例で私の答えを更新しました! –

関連する問題