JavaFX(一)入门介绍

最近需要制作一些桌面小工具,因为跨平台的特点,我选择使用JavaFX库


JavaFX介绍

JavaFX 是一个开源的下一代客户端应用平台,适用于基于Java构建的桌面、移动端和嵌入式系统。 它是许多个人和公司的共同努力的成果,目的是为开发丰富的客户端应用提供一个现代、高效、功能齐全的工具包。

中文官方网站:https://openjfx.cn/

JavaFX入门

1 制作第一个窗口

package com.fxUnit01;

import javafx.application.Application;
import javafx.stage.Stage;

/**
 *  @Name FX learning unit 1
 *  @Description 第一个窗口制作
 *  @Author Fancy
 *  @return 2022/6/13
 *  @Version 1.0
 */
public class fxTest extends Application{
    public static void main(String[] args) {
        Application.launch(fxTest.class,args);
        System.out.println("HelloWorld");
    }

    public void start(Stage s) throws  Exception{
        System.out.println("这是start方法");
        //show方法调用窗口
        s.show();

        s.setTitle("请检单生成器V1.0");
    }
}
package com.fxUnit02;

import javafx.application.Application;
import javafx.application.Platform;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.stage.Stage;

import java.io.FileInputStream;

/**
 *  @Name FX learning unit 2
 *  @Description 单个窗口的生命周期、各类属性设置
 *  @Author Fancy
 *  @return 2022/6/13
 *  @Version 1.0
 */
public class fxTest2 extends Application {
    public static void main(String[] args) {
        System.out.println("main方法调用"+Thread.currentThread().getName());
        Application.launch(fxTest2.class,args);

    }
    public void init() throws Exception{
        System.out.println("init方法调用"+Thread.currentThread().getName());
    }
    @Override
    public void start(Stage primaryStage) throws Exception {
        //关闭窗口,程序并不退出
        Platform.setImplicitExit(false);

        //stage就是一个窗口
        System.out.println("start"+Thread.currentThread().getName());

        //设置标题
        primaryStage.setTitle("请检单生成器V1.0");
        //设置左上角图标
        primaryStage.getIcons().add(new Image(new FileInputStream("D:\\整理\\Code_1\\img\\bv_Logo.png")));
        //设置最小化
        primaryStage.setIconified(true);
        //设置最大化
        primaryStage.setMaximized(true);
        //设置高度
        primaryStage.setHeight(1000);
        primaryStage.setWidth(1000);
/*        //设置最大高度、宽度
        primaryStage.setMaxHeight(1000);
        primaryStage.setMaxWidth(1000);*/
        //最小高度、宽度
        primaryStage.setMinHeight(300);
        primaryStage.setMinWidth(300);
        //监听宽和高,观察者模式
        primaryStage.heightProperty().addListener(new ChangeListener<Number>() {
            @Override
            public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
                System.out.println("当前高度"+newValue.doubleValue());
            }
        });
        primaryStage.widthProperty().addListener(new ChangeListener<Number>(){
            @Override
            public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
                System.out.println("当前宽度"+newValue.doubleValue());
            }
        });

        //设置全屏开启
        //primaryStage.setFullScreen(true);
        //在窗口上铺一层桌布
        primaryStage.setScene(new Scene(new Group()));



        //调用show方法显示窗口
        primaryStage.show();

        //设置透明度
        primaryStage.setOpacity(0.8);

        //窗口一直在上层
        primaryStage.setAlwaysOnTop(true);

        //设置初始坐标
        primaryStage.setX(500.0);
        primaryStage.setY(500.0);


    }

    public void stop() throws Exception{
        System.out.println("stop"+Thread.currentThread().getName());
    }
}

代码来源:B站UP:Aimls

https://space.bilibili.com/5096022/channel/collectiondetail?sid=210809

posted @ 2022-07-01 23:54  Fancy[love]  阅读(386)  评论(0编辑  收藏  举报