文章目录
- 请使用jdk8到jdk10版本,更高版本需手动导入库
- 创建JavaFX类
- JavaFX窗口的生命周期:
- 面板Stage基础操作:
- 面板Stage进阶操作:
- 窗口的五种模式
- 监听器的入门
- 模态化窗口:
请使用jdk8到jdk10版本,更高版本需手动导入库
创建JavaFX类
确保Application类是属于JavaFX包下
public class Main extends Application {
public static void main(String[] args) {
launch(args);//args来源于main()方法里自动生成的args,不可改动
}
@Override
public void start(Stage primaryStage) throws Exception {
primaryStage.show();
}
}
JavaFX窗口的生命周期:
@Override
public void init() throws Exception {
//初始化阶段
}
@Override
public void start(Stage primaryStage) throws Exception {
//执行阶段
//绝大部分执行代码都写在这里
}
@Override
public void stop() throws Exception {
//结束阶段
//窗口关闭时执行
}
面板Stage基础操作:
primaryStage对象是来自start()方法里的一个Stage对象。
primaryStage.getIcons().add(new Image("路径")); //改变图标
primaryStage.setX(1500); //设置初始x轴位置(窗口的左上角位置)
primaryStage.setY(200); //设置初始y轴位置(窗口的左上角位置)
primaryStage.setHeight(500); //设置窗口高度
primaryStage.setWidth(100); //设置窗口宽度
primaryStage.setMaxHeight(800); //设置窗口最大高度
primaryStage.setMaxWidth(800); //设置窗口最大宽度
primaryStage.setMinHeight(300); //设置窗口最小高度
primaryStage.setMinWidth(300); //设置窗口最小宽度
primaryStage.show(); //窗口显示 结尾不加上show()的话窗口不会显示
primaryStage.close(); //窗口关闭
//======================================================
primaryStage.getX(); //获取当前x轴坐标(窗口的左上角位置)
primaryStage.getY(); //获取当前y轴坐标(窗口的左上角位置)
primaryStage.getHeight(); //获取当前窗口高度(double)
primaryStage.getWidth(); //获取当前窗口宽度(double)
primaryStage.getMaxHeight(); //获取窗口最大高度(double)
primaryStage.getMaxWidth(); //获取窗口最大宽度(double)
primaryStage.getMinHeight(); //获取窗口最小高度(double)
primaryStage.getMinWidth(); //获取窗口最小宽度(double)
面板Stage进阶操作:
primaryStage.setTitle("hello world"); //设置窗口表题
primaryStage.getIcons().add(new Image("路径"));//设置窗口的图标和最小化图标
primaryStage.setMaximized(true); //设置窗口是否最大化 T最大化 F不最大化
primaryStage.setAlwaysOnTop(false); //设置窗口是否总是显示在最前端 T是 F否
primaryStage.setIconified(true); //设置窗口是否最小化 T最小化 F不最小化
primaryStage.setResizable(true); //设置窗口是否可以变化大小 T可以 F不可以
primaryStage.setOpacity(1); //透明度。最小值0完全透明,最大值1完全不透明
窗口的五种模式
primaryStage.initStyle(StageStyle.DECORATED); //普通模式
primaryStage.initStyle(StageStyle.TRANSPARENT);//透明模式
primaryStage.initStyle(StageStyle.UNDECORATED); //透明模式2
primaryStage.initStyle(StageStyle.UNIFIED); //主题色模式(与Windows主题一致)
primaryStage.initStyle(StageStyle.UTILITY); //通知框模式
监听器的入门
快速记忆:
Stage.***Property().addListener(new ChangeListener敲回车
//高度变化监听器,高度发生变化时执行大括号内的代码
primaryStage.heightProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
//可用参数↓
//oldValue 监听到动作之前的旧数据
//newValue 监听到动作之前的新数据
}
});
//x轴移动监听器,x轴坐标发生变化时执行大括号内代码
primaryStage.xProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
//可用参数↓
//oldValue 监听到动作之前的旧数据
//newValue 监听到动作之前的新数据
}
});
模态化窗口:
模态类型窗口:就是指除非采取有效的关闭手段,用户鼠标点或者输入光标一直停留在其上的窗口
//新建两个窗口↓
Stage s1=new Stage();
Stage s2=new Stage();
//将2号窗口附属于1号窗口↓(1号窗口是2号窗口的拥有者)
s2.initOwner(s1);
//2号窗口被设置为闪烁效果
s2.initModality(Modality.WINDOW_MODAL);