JavaFX Stage.setMaximized仅在Mac OSX上运行一次(10.9.5)

时间:2016-07-26 20:47:45

标签: java javafx

我正在运行最新的JDK:1.8.0_102,但它在1.8.0_45上也失败了。 这是我复制问题的简单程序。重现的步骤:

  1. 运行程序
  2. 点击最大化(它会正确最大化)
  3. 点击恢复(它将"取消最大化"正确)
  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);
    }
    }
    

1 个答案:

答案 0 :(得分:0)

最大化必须设置为false才能再次运行!一旦您对舞台进行图标化,请尝试将maxim设置为false。如果maxim已经设置为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);
    }