🌿🌿🌿跟随博主脚步,从这里开始→博主主页🌿🌿🌿
- 欢迎大家:这里是我的学习笔记、总结知识的地方,喜欢的话请三连,有问题可以私信🌳🌳🌳
您的点赞👍、关注➕、收藏⭐️、评论📝、私信📧是我最大的支持与鼓舞!!!🌻🌻🌻
JavaFX基础
JavaFX概述
Java GUI编程简史
- Java支持图形用户界面(Graphical User Interface, GUI) 开发。
① Java从1.0开始就提供一个AWT类库,称为抽象窗口工具
箱(Abstract Window Toolkit,AWT)。
② Java从1.2出现了Swing,Oracle宣布不再继续开发Swing。
③ 从Java 8开始,JavaFX已经与JDK绑定到一起,但Java11
之后,JavaFX与JDK分开发布
配置JavaFX开发环境
- JavaFX框架API定义了30多个包,这些包以javafx开头,如
javafx.application
包、javafx.stage
包、javafx.scene
包、
javafx.scene.layout
包等。JavaFX应用程序的功能通过这些包中
的接口和类实现。 - 在JDK中这些库文件被打包在名为jfxrt.jar文件中,存放在JDK安
装目录的\jre\lib\ext目录中。为编译和运行JavaFX程序,需要将
该文件添加到类路径中。
JavaFX程序基本结构
舞台、场景和节点
- 继承Application类
- 每个JavaFX程序都必须继承
javafx.application.Application
类。
Application类定义了应用程序生命周期方法
初始化(init)
开始(start)
停止(stop)
启动(launch)
Application类生命周期方法
- Application类生命周期方法
Application类定义了三个生命周期方法,包括init()
、start()
和stop()
方法,在JavaFX程序中可以覆盖这些方法。
public void init( ) 初始化方法
public abstract void start(Stage stage) 启动方法
public void stop( ) 停止方法
JavaFX程序启动
- 可以从main()方法中调用Application类的静态方法
launch()
,该
方法启动一个独立的JavaFX程序。 - launch()方法启动后调用
init()
方法和start()
方法,当应用程序终
止时,launch()
方法才返回。
实战演练
【练习 】 实现HelloWorld.java JavaFX程序
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class HelloWorld extends Application {
@Override
public void start(Stage primaryStage) {
// 创建一个标签,内容是"Hello, World!"
Label label = new Label("Hello, World!");
// 使用StackPane作为根节点,将标签添加到其中
StackPane root = new StackPane();
root.getChildren().add(label);
// 创建一个场景,将根节点和尺寸传递给场景
Scene scene = new Scene(root, 300, 250);
// 配置并显示舞台
primaryStage.setTitle("Hello World!"); // 设置舞台标题
primaryStage.setScene(scene); // 将场景添加到舞台
primaryStage.show(); // 显示舞台
}
public static void main(String[] args) {
launch(args); // 启动JavaFX应用程序
}
}
JavaFX属性与绑定
JavaFX属性
- 在JavaFX中,节点类通常包含一些属性,这些属性与普通Java类
的属性不同。 - 首先,属性的类型应为Property接口的子类型,如
StringPropert
为字符串类型属性,IntegerProperty为整型类型属性。 - 其次,一个属性除
setter
和getter
方法外,还应有第三个方法,它
返回一个实现Property接口
的对象。 - JavaFX属性的主要功能是属性绑定和事件处理。
通过属性的addListener()
方法可以为其注册监听器。
通过属性的bind()
方法可以实现属性绑定。当被绑定的对象属性发生改变时,将自动反映到绑定的对象上。
属性绑定
- 属性绑定是JavaFX引入的一个新概念。可以将一个目标对象和一
个源对象绑定。 - 如果源对象的属性值改变了,目标对象的属性值随之自动改变。
一个目标target使用bind()方法和源source进行绑定,如下所示。
target.bind(source);
- 为实现窗体大小改变保证圆仍然显示在中央,可以将圆心坐标属性centerX和centerY属性分别绑定到面板的width/2以及height/2上。
使用下面代码实现属性绑定。
circle.centerXProperty().bind(
rootNode.widthProperty().divide(2));
circle.centerYProperty().bind(
rootNode.heightProperty().divide(2));
实战演练
【练习 】 实现ShowCircle.java JavaFX程序
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;
public class ShowCircle extends Application {
@Override
public void start(Stage primaryStage) {
// 创建一个圆形,设置其半径和填充颜色
Circle circle = new Circle(100, 100, 50); // 圆心在(100, 100),半径为50
circle.setFill(javafx.scene.paint.Color.BLUE); // 设置填充颜色为蓝色
// 使用StackPane作为根节点,将圆形添加到其中
StackPane root = new StackPane();
root.getChildren().add(circle);
// 创建一个场景,将根节点和尺寸传递给场景
Scene scene = new Scene(root, 300, 250);
// 配置并显示舞台
primaryStage.setTitle("Show Circle"); // 设置舞台标题
primaryStage.setScene(scene); // 将场景添加到舞台
primaryStage.show(); // 显示舞台
}
public static void main(String[] args) {
launch(args); // 启动JavaFX应用程序
}
}
JavaFX界面布局
JavaFX坐标系
- 屏幕和面板等组件坐标与数学的笛卡尔坐标不同,它的原点在屏幕或面板的左上角,横向为x轴,纵向为y轴。坐标单位是像素。
博主用心写,读者点关注,互动传真其,知识不迷路。