JavaFX: Application流程和相关属性

JavaFX: Application流程和相关属性

Java 知识体系

Application流程:UI进程


1、创建工程HelloFX

按照JavaFX: IntelliJ 开发 Window 应用创建工程HelloFX,添加Application相同的方法覆盖Override
在这里插入图片描述

2、添加输出查看流程

public class Main extends Application {
    
    

    @Override
    public void start(Stage primaryStage) throws Exception{
    
    
        System.out.println("HelloFX start(Stage primaryStage)");
        Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
        primaryStage.setTitle("Hello World");
        primaryStage.setScene(new Scene(root, 300, 275));
        primaryStage.show();
    }


    @Override
    public void stop() throws Exception {
    
    
        super.stop();
        System.out.println("HelloFX stop()");
    }

    @Override
    public void init() throws Exception {
    
    
        super.init();
        System.out.println("HelloFX init()");
    }

    public Main() {
    
    
        super();
        System.out.println("HelloFX Main()");
    }

    public static void main(String[] args) {
    
    
        System.out.println("HelloFX main");
        launch(args);
    }
}

生命周期:HelloFX main -> HelloFX Main() -> HelloFX init() -> HelloFX start(Stage primaryStage) -> HelloFX stop()

HelloFX main这个是Java程序入口;HelloFX Main()构造函数,基本不用;HelloFX init()通过名称就是初始化参数;HelloFX start(Stage primaryStage)这个就是窗口和布局操作,默认创建了这个方法,其他可以不写;HelloFX stop()程序退出调用。

在这里插入图片描述

3、当前进程查看Thread.currentThread().getName()

在这里插入图片描述
可以看到init中启动一个新线程JavaFX-Launcher,所以UI更新在start中开始。
在这里插入图片描述

相关布局属性设置

在这里插入图片描述
对照项目代码查看图片,罗列一些属性设置:

  • FXMLLoader.load(getClass().getResource("sample.fxml")); 导入布局文件
  • primaryStage.setTitle("Hello World"); 设置标题
  • primaryStage.setScene(new Scene(root, 300, 275)); 设置画布Scene,并设置了画布的布局和宽高,不然拖动窗口stage有区域显示黑色
  • primaryStage.show(); 显示程序窗口,不然不会显示
  • primaryStage.getIcons().add(new Image("/resources/icon/web_hi_res_512.png")); 设置左上角图标
  • primaryStage.setIconified(true); 最小化窗口,相当于点击窗口上的最小化图标
  • primaryStage.setMaximized(true); 最大化窗口,相当于点击窗口最大化图标
  • primaryStage.close(); 关闭窗口,相当于点击窗口关闭图标
  • primaryStage.setWidth(400); 设置窗口宽度
  • primaryStage.setHeight(300); 设置窗口高度
  • primaryStage.setMaxWidth(1000); 设置窗口缩放的最大宽度;primaryStage.setMaxHeight(600); 设置窗口缩放的最大高度
  • primaryStage.setMinWidth(200); 设置窗口缩放的最小宽度;primaryStage.setMinHeight(200); 设置窗口缩放的最小高度
  • primaryStage.setFullScreen(true); 设置全屏显示,不过需要添加画布Scene,不然不生效,不过一般都会有这个。
  • primaryStage.getWidth() 获取窗口的宽度;primaryStage.getHeight() 获取窗口的高度。没有设置窗口的Stage的宽高时,需要显示show()再获取。
  • primaryStage.widthProperty().addListener 添加宽度变化监听;primaryStage.heightProperty().addListener 添加高度变化监听
        primaryStage.widthProperty().addListener(new ChangeListener<Number>() {
    
    
            @Override
            public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
    
    
                System.out.println("当前宽度:" + newValue.doubleValue());
            }
        });
        primaryStage.heightProperty().addListener(new ChangeListener<Number>() {
    
    
            @Override
            public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
    
    
                System.out.println("当前高度:" + newValue.doubleValue());
            }
        });
  • primaryStage.setOpacity(0.5); 设置透明度,0.5是半透明。
  • primaryStage.setAlwaysOnTop(true); 置顶,界面在所有程序最上面

猜你喜欢

转载自blog.csdn.net/qq_23452385/article/details/111085547