Java Stage.setScene()似乎忽略maxHeight/Width设置

Java Stage.setScene()似乎忽略maxHeight/Width设置,java,javafx,java-11,Java,Javafx,Java 11,操作系统:Linux Mint 18.3,Java11 这是一个SSCCE: import javafx.application.*; import javafx.stage.*; import javafx.scene.*; import javafx.scene.layout.*; import javafx.scene.control.*; public class SceneSwitcher extends Application { public static void m

操作系统:Linux Mint 18.3,Java11

这是一个SSCCE:

import javafx.application.*;
import javafx.stage.*;
import javafx.scene.*;
import javafx.scene.layout.*;
import javafx.scene.control.*;

public class SceneSwitcher extends Application {

    public static void main(String[] args) {
        launch( args);
    }
    Button btnSwitchToScene2;
    Scene scene1;
    Button btnSwitchToScene1;
    Scene scene2;
    Stage stage;
    @Override 
    public void start(Stage primaryStage)
    {
        stage = primaryStage;


        stage.setMinHeight( 500 );
        stage.setMaxHeight( 500 );
        // stage.setHeight( 500 );

        stage.setMinWidth( 1000 );
        stage.setMaxWidth( 1000 );
        // stage.setWidth( 1000 );

        stage.setResizable( false );

        btnSwitchToScene2 = new Button();
        btnSwitchToScene2.setText("Switch!");
        btnSwitchToScene2.setOnAction(  e ->
            btnSwitchToScene2_Click()  );
        VBox pane1 = new VBox(10);
        pane1.getChildren().addAll( btnSwitchToScene2);
        scene1 = new Scene(pane1, 250, 150);
        btnSwitchToScene2 = new Button();
        btnSwitchToScene2.setText("Switch!");
        btnSwitchToScene2.setOnAction( e ->
            btnSwitchToScene1_Click() );
        HBox pane2 = new HBox(10);
        pane2.getChildren().addAll( btnSwitchToScene2);
        scene2 = new Scene(pane2, 300, 75);
        // Set the stage with scene 1 and show the stage
        primaryStage.setScene(scene1);
        primaryStage.setTitle("Scene Switcher");
        primaryStage.show();

    }
    private void btnSwitchToScene2_Click()
    {
        stage.setScene(scene2);
    }
    private void btnSwitchToScene1_Click()
    {
        stage.setScene(scene1);
    }
}
第一个显示具有正确的尺寸。但是,当您更改
场景时,尽管
可调整大小==false
仍保留,但窗口(
阶段
)的尺寸会调整以匹配
场景

这是故意的行为吗?如果是这样,我应该怎么做才能保持一个固定的维度
阶段

如果您取消对行
stage.setHeight(500)的注释,则会发生更令人费解的事情:在我的机器上,单击开关按钮时,窗口大小保持不变,但完全变黑

在Swing中,这些设置相当棘手,经验法则是使用
setPreferredHeight/Width/Size
等,并允许框架处理事情。它在JavaFX中是如何工作的