0
点赞
收藏
分享

微信扫一扫

JavaFX(一、Hello World和生命周期以及Stage基本属性)

攻城狮Chova 2021-09-27 阅读 45

HelloWorld

public class Main extends Application {
    //启动
    @Override
    public void start(Stage primaryStage) throws Exception{
        System.out.println("start = "+Thread.currentThread().getName()); //start = JavaFX Application Thread
        //显示窗体
        primaryStage.show();
    }
    public static void main(String[] args) {
        System.out.println("main = "+Thread.currentThread().getName()); //main = main
        launch(args);
    }
}

生命周期

  • init: 初始化
  • start: 启动
  • stop: 停止
public class Main extends Application {
    //初始化
    @Override
    public void init() throws Exception {
        super.init();
        System.out.println("init = "+Thread.currentThread().getName());//init = JavaFX-Launcher
    }

    //启动
    @Override
    public void start(Stage primaryStage) throws Exception{
        System.out.println("start = "+Thread.currentThread().getName()); //start = JavaFX Application Thread
        //显示窗体
        primaryStage.show();
    }

    //停止
    @Override
    public void stop() throws Exception {
        super.stop();
        System.out.println("stop = "+Thread.currentThread().getName()); //stop = JavaFX Application Thread(UI线程)
    }

    public static void main(String[] args) {
        System.out.println("main = "+Thread.currentThread().getName()); //main = main
        launch(args);
    }
}

窗体层级关系

Stage相关

public class Main extends Application {
    @Override
    public void start(Stage primaryStage) throws Exception{
        Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
        //设置标题信息
        primaryStage.setTitle("Hello World");
        //设置左上角小图标
        primaryStage.getIcons().add(new Image("/icon/icon.jpg"));

        //设置最小化
//        primaryStage.setIconified(true);
        //设置最大化,不是全屏
//        primaryStage.setMaximized(true);
        //关闭窗体
//        primaryStage.close();

        //设置屏幕宽高
        primaryStage.setScene(new Scene(root, 300, 275));

        //下面两行和上面一行等效
//        primaryStage.setWidth(500);
//        primaryStage.setHeight(500);

        //设置固定大小,禁止拉伸窗体
//        primaryStage.setResizable(false);

        //设置最大最小宽高
//        primaryStage.setMaxHeight(600);
//        primaryStage.setMaxHeight(600);

        //获取宽高,但是如果没有设置宽高使用默认高宽,则必须在show()执行之后获取
//        primaryStage.getWidth();
//        primaryStage.getHeight();

        //设置宽高变化的监听回调,多用于适配
        primaryStage.heightProperty().addListener((observable, oldValue, newValue) -> {

        });

        //设置全屏,必须搭配setScene使用,否则无效
//        primaryStage.setFullScreen(true);

        //设置透明度(值0-1)
//        primaryStage.setOpacity(0.5);//半透明

        //设置窗口永远在最上层
//        primaryStage.setAlwaysOnTop(true);

        //设置窗体初始所在位置,以左上角为坐标原点,和android手机坐标一致
//        primaryStage.setX(100);
//        primaryStage.setY(100);
        //窗体坐标监听器
        primaryStage.xProperty().addListener((observable, oldValue, newValue) -> {

        });
        //显示窗体
        primaryStage.show();
    }
    public static void main(String[] args) {
        System.out.println("main = "+Thread.currentThread().getName()); //main = main
        launch(args);
    }
}
举报

相关推荐

0 条评论