什么是Stage
Stage就是传统意义上的窗口(或称窗体)。可以通过相关方法设置窗口的标题名称,大小尺寸等。Stage仅管理与窗口相关的属性,不涉及窗口内部的控件绘制。
常用方法
// 窗口标题
stage.setTitle("窗口标题");
// 添加程序Icon图标,反斜杠开始的路径相对于classpath根目录开始的
stage.getIcons().add(new Image("/logo.png"));
// 设置窗口位置,屏幕左上角为坐标原点
stage.setX(100);
stage.setY(100);
// 设置不透明度,取值0至1的浮点数,越大越不透明
stage.setOpacity(0.5);
// 窗口始终置于顶层
stage.setAlwaysOnTop(true);
// 窗口是否最小化,true最小化/false否
stage.setIconified(true);
// 窗口是否最大化,true最大化/false否
stage.setMaximized(true);
// 是否可以拖动窗口调整大小: true可以调整/false否
stage.setResizable(true);
// 设置最大宽度
stage.setMaxWidth(1000);
// 设置最大高度
stage.setMaxHeight(1000);
// 设置最小宽度
stage.setMinWidth(100);
// 设置最小高度
stage.setMinHeight(100);
// 设置Scene画布
stage.setScene(new Scene(new Group()));
// 使窗口全屏显示,需要设置scene属性,使画布内容不为空,全屏才能生效
stage.setFullScreen(true);
// 显示窗口
stage.show();
// 获取宽度(通常在stage.show()方法后使用,以获取经过计算后的宽高)
stage.getWidth();
// 获取高度(通常在stage.show()方法后使用,以获取经过计算后的宽高)
stage.getHeight();
// 关闭窗口
stage.close();
初始样式
// 初始化样式
stage.initStyle(StageStyle.DECORATED); // 默认效果
stage.initStyle(StageStyle.UNDECORATED);
stage.initStyle(StageStyle.UNIFIED);
stage.initStyle(StageStyle.UTILITY); // 只有关闭按钮的窗口
stage.initStyle(StageStyle.TRANSPARENT); // 全透明窗口
模态框与非模态框
// 非模态框
stage.initModality(Modality.NONE);
// 模态框
stage.initModality(Modality.APPLICATION_MODAL);
// 使用WINDOW_MODAL模态框时需要设置窗口的拥有者
stage.initOwner(parentStage);
stage.initModality(Modality.WINDOW_MODAL);
动态监听成员属性
// 监听高度
stage.heightProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
System.out.println(newValue.doubleValue());
}
});
// 监听宽度(lambda表达式写法)
stage.widthProperty().addListener((observable, oldValue, newValue) -> System.out.println(newValue.doubleValue()));
// 监听窗口坐标
stage.xProperty().addListener((observable, oldValue, newValue) -> System.out.println(newValue));
stage.yProperty().addListener((observable, oldValue, newValue) -> System.out.println(newValue));
什么是Scene
Scene即传统意义上的画布,用来绘制如按钮、文本框等控件。