Java Stage.setScene()似乎忽略maxHeight/Width设置
操作系统:Linux Mint 18.3,Java11 这是一个SSCCE: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
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中是如何工作的