我知道,使用JavaFX可以使用stage.setMinWidth()和stage.setMinHeight()设置舞台的最小大小,但是,这将包括窗口边框(带有最小,最大化和关闭按钮).
设置最小尺寸时如何排除此现象?
解决方法:
您可以显示未装饰的舞台,这将删除所有边框:
primaryStage.initStyle(StageStyle.UNDECORATED);
如果你想装饰它
如果要装饰它,可以将场景的大小设置为首选的最小大小,然后显示窗口(舞台将具有能够以该大小显示场景的大小,而实际大小是您所需的最小大小) ),然后将最小尺寸设置为当前尺寸.
例:
public class Main extends Application {
private final int PREF_MIN_WIDTH = 500;
private final int PREF_MIN_HEIGHT = 500;
@Override
public void start(Stage primaryStage) {
try {
Scene scene = new Scene(new HBox(), PREF_MIN_WIDTH, PREF_MIN_HEIGHT);
primaryStage.setScene(scene);
primaryStage.showingProperty().addListener((observable, oldValue, showing) -> {
if(showing) {
primaryStage.setMinHeight(primaryStage.getHeight());
primaryStage.setMinWidth(primaryStage.getWidth());
primaryStage.setTitle("My mininal size is: W"+ primaryStage.getMinWidth()+" H"+primaryStage.getMinHeight());
}
});
primaryStage.show();
} catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}
这将产生一个这样的窗口: