JavaFX 是一款由 Oracle 公司推出的用于开发富客户端应用程序的框架。它建立在 Java 平台之上,允许开发者利用 Java 语言编写出跨平台的桌面应用程序。本文将带领你从 JavaFX 的基础知识入门,逐步深入,最终能够实战打造出炫酷的桌面应用。
JavaFX 简介
JavaFX 是 Java 的下一代客户端平台,它提供了丰富的 UI 控件和强大的图形处理能力。与 Swing 相比,JavaFX 引入了 CSS 样式化、场景图(Scene Graph)以及强大的 FXML 技术等现代化特性,使得应用程序的开发更加高效和直观。
JavaFX 入门
1. 安装 JavaFX SDK
首先,你需要下载并安装 JavaFX SDK。你可以从 Oracle 官网 下载最新版本的 SDK,并按照安装指南进行安装。
2. 创建第一个 JavaFX 应用
以下是创建一个简单的 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 HelloWorldApp extends Application {
@Override
public void start(Stage primaryStage) {
Label label = new Label("Hello, JavaFX!");
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);
}
}
这段代码创建了一个包含一个标签的简单窗口,显示 “Hello, JavaFX!“。
JavaFX 基础知识
1. 场景图(Scene Graph)
JavaFX 使用场景图来表示 UI 组件的层次结构。场景图由节点组成,每个节点代表一个 UI 组件。
2. 控件
JavaFX 提供了丰富的 UI 控件,如按钮、文本框、标签等。你可以通过设置属性来定制这些控件的外观和行为。
3. CSS 样式化
JavaFX 支持使用 CSS 对 UI 控件进行样式化。这使得你能够轻松地更改应用程序的外观,而不需要修改代码。
JavaFX 高级特性
1. FXML
FXML 是一种基于 XML 的标记语言,用于描述 JavaFX 应用的 UI。你可以使用 FXML 来定义应用程序的界面,然后在 Java 代码中加载和绑定这些界面。
2. 事件处理
JavaFX 使用事件驱动模型来处理用户交互。你可以为 UI 控件添加事件监听器,并在事件发生时执行相应的操作。
3. 图形和动画
JavaFX 提供了强大的图形和动画功能,允许你创建复杂的视觉效果。
实战案例
以下是一个使用 JavaFX 创建的简单计算器的示例:
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.scene.layout.ColumnConstraints;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.RowConstraints;
import javafx.stage.Stage;
public class CalculatorApp extends Application {
@Override
public void start(Stage primaryStage) {
GridPane grid = new GridPane();
grid.setAlignment(Pos.CENTER);
grid.setHgap(10);
grid.setVgap(10);
grid.setPadding(new Insets(25, 25, 25, 25));
ColumnConstraints column1 = new ColumnConstraints();
column1.setPercentWidth(33.33);
ColumnConstraints column2 = new ColumnConstraints();
column2.setPercentWidth(33.33);
ColumnConstraints column3 = new ColumnConstraints();
column3.setPercentWidth(33.33);
RowConstraints row1 = new RowConstraints();
row1.setPercentHeight(25);
RowConstraints row2 = new RowConstraints();
row2.setPercentHeight(25);
RowConstraints row3 = new RowConstraints();
row3.setPercentHeight(25);
RowConstraints row4 = new RowConstraints();
row4.setPercentHeight(25);
RowConstraints row5 = new RowConstraints();
row5.setPercentHeight(25);
grid.getColumnConstraints().addAll(column1, column2, column3);
grid.getRowConstraints().addAll(row1, row2, row3, row4, row5);
TextField firstNumber = new TextField();
firstNumber.setAlignment(Pos.CENTER);
grid.add(firstNumber, 0, 0);
TextField secondNumber = new TextField();
secondNumber.setAlignment(Pos.CENTER);
grid.add(secondNumber, 1, 0);
Button addButton = new Button("+");
addButton.setAlignment(Pos.CENTER);
grid.add(addButton, 2, 0);
TextField result = new TextField();
result.setAlignment(Pos.CENTER);
grid.add(result, 0, 1, 3, 1);
addButton.setOnAction(event -> {
double num1 = Double.parseDouble(firstNumber.getText());
double num2 = Double.parseDouble(secondNumber.getText());
result.setText(String.valueOf(num1 + num2));
});
Scene scene = new Scene(grid, 300, 250);
primaryStage.setTitle("Calculator");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
在这个例子中,我们创建了一个简单的计算器,它能够接收两个数字并执行加法运算。
总结
通过本文的介绍,你应该对 JavaFX 框架有了初步的了解。从基础知识到实战案例,JavaFX 为开发者提供了丰富的功能和工具,帮助你轻松地创建出炫酷的桌面应用。不断实践和学习,你会在这个领域取得更大的成就。
