什么是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>() {@Overridepublic 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即传统意义上的画布,用来绘制如按钮、文本框等控件。
