java fx 教程_JavaFX快速入门
时间: 2024-06-09 10:05:04 浏览: 175
JavaFX 是一个用于构建富客户端应用程序的图形用户界面 (GUI) 框架。本教程将带您快速了解 JavaFX 的基础知识,以便开始构建自己的应用程序。
1. 安装 JavaFX
首先,您需要安装 JavaFX。如果您已经安装了 Java SE 11 或更高版本,则无需额外的安装。否则,您需要下载并安装 JavaFX SDK。下载链接:https://gluonhq.com/products/javafx/
2. 创建 JavaFX 应用程序
创建 JavaFX 应用程序的步骤如下:
- 创建一个 Java 项目。
- 添加 JavaFX 库到项目中。
- 创建一个 Java 类,并将其扩展为 Application 类。
- 在 start() 方法中编写应用程序的 GUI 代码。
以下是一个简单的示例:
```
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class MyJavaFXApp extends Application {
@Override
public void start(Stage primaryStage) {
// 创建一个标签
Label label = new Label("Hello, JavaFX!");
// 创建一个 StackPane 布局
StackPane root = new StackPane();
root.getChildren().add(label);
// 创建一个场景
Scene scene = new Scene(root, 300, 250);
// 设置场景到舞台
primaryStage.setScene(scene);
// 设置舞台标题
primaryStage.setTitle("My JavaFX App");
// 显示舞台
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
```
3. 运行 JavaFX 应用程序
要运行 JavaFX 应用程序,您可以在 IDE 中单击“运行”按钮,或者在命令行中使用以下命令:
```
java --module-path /path/to/javafx-sdk-16/lib --add-modules javafx.controls,javafx.fxml MyJavaFXApp
```
其中,`/path/to/javafx-sdk-16/lib` 是 JavaFX SDK 的路径。如果您使用的是其他版本的 JavaFX SDK,则需要修改路径。
4. JavaFX 控件
JavaFX 提供了许多常用的 GUI 控件,例如按钮、标签、文本框、下拉列表框等等。您可以使用这些控件构建自己的用户界面。
以下是一些常用的 JavaFX 控件:
- Button:按钮控件。
- Label:标签控件。
- TextField:文本框控件。
- TextArea:多行文本框控件。
- ChoiceBox:下拉列表框控件。
- CheckBox:复选框控件。
- RadioButton:单选按钮控件。
- ToggleButton:切换按钮控件。
- ComboBox:组合框控件。
使用这些控件的示例代码如下:
```
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.CheckBox;
import javafx.scene.control.ChoiceBox;
import javafx.scene.control.ComboBox;
import javafx.scene.control.Label;
import javafx.scene.control.RadioButton;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.control.ToggleButton;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class MyJavaFXApp extends Application {
@Override
public void start(Stage primaryStage) {
// 创建一个标签
Label label = new Label("JavaFX Controls");
// 创建一个文本框
TextField textField = new TextField();
// 创建一个多行文本框
TextArea textArea = new TextArea();
// 创建一个按钮
Button button = new Button("Click Me");
// 创建一个复选框
CheckBox checkBox = new CheckBox("Check Me");
// 创建两个单选按钮
RadioButton radioButton1 = new RadioButton("Option 1");
RadioButton radioButton2 = new RadioButton("Option 2");
// 创建一个切换按钮
ToggleButton toggleButton = new ToggleButton("Toggle Me");
// 创建一个下拉列表框
ChoiceBox<String> choiceBox = new ChoiceBox<>();
choiceBox.getItems().addAll("Option 1", "Option 2", "Option 3");
choiceBox.setValue("Option 1");
// 创建一个组合框
ComboBox<String> comboBox = new ComboBox<>();
comboBox.getItems().addAll("Option 1", "Option 2", "Option 3");
comboBox.setEditable(true);
// 创建一个网格布局
GridPane gridPane = new GridPane();
gridPane.setPadding(new Insets(10));
gridPane.setHgap(10);
gridPane.setVgap(10);
// 将控件添加到网格布局中
gridPane.add(label, 0, 0);
gridPane.add(textField, 1, 0);
gridPane.add(textArea, 0, 1, 2, 1);
gridPane.add(button, 0, 2);
gridPane.add(checkBox, 1, 2);
gridPane.add(radioButton1, 0, 3);
gridPane.add(radioButton2, 1, 3);
gridPane.add(toggleButton, 0, 4);
gridPane.add(choiceBox, 1, 4);
gridPane.add(comboBox, 0, 5, 2, 1);
// 创建一个水平箱布局
HBox hBox = new HBox();
hBox.setPadding(new Insets(10));
hBox.setSpacing(10);
hBox.getChildren().addAll(button, checkBox, radioButton1, radioButton2, toggleButton);
// 创建一个垂直箱布局
VBox vBox = new VBox();
vBox.setPadding(new Insets(10));
vBox.setSpacing(10);
vBox.getChildren().addAll(label, textField, textArea, hBox, choiceBox, comboBox);
// 创建一个场景
Scene scene = new Scene(vBox, 400, 300);
// 设置场景到舞台
primaryStage.setScene(scene);
// 设置舞台标题
primaryStage.setTitle("My JavaFX App");
// 显示舞台
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
```
5. JavaFX 布局
JavaFX 提供了许多常用的布局,例如网格布局、边界布局、流布局等等。您可以使用这些布局来组织自己的用户界面。
以下是一些常用的 JavaFX 布局:
- GridPane:网格布局。
- BorderPane:边界布局。
- HBox:水平箱布局。
- VBox:垂直箱布局。
- FlowPane:流布局。
使用这些布局的示例代码如下:
```
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.FlowPane;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class MyJavaFXApp extends Application {
@Override
public void start(Stage primaryStage) {
// 创建一个标签
Label label = new Label("JavaFX Layouts");
// 创建一个按钮
Button button = new Button("Click Me");
// 创建一个网格布局
GridPane gridPane = new GridPane();
gridPane.setPadding(new Insets(10));
gridPane.setHgap(10);
gridPane.setVgap(10);
// 将控件添加到网格布局中
gridPane.add(label, 0, 0);
gridPane.add(button, 1, 0);
// 创建一个边界布局
BorderPane borderPane = new BorderPane();
borderPane.setPadding(new Insets(10));
borderPane.setTop(label);
borderPane.setCenter(button);
// 创建一个水平箱布局
HBox hBox = new HBox();
hBox.setPadding(new Insets(10));
hBox.setSpacing(10);
hBox.getChildren().addAll(label, button);
// 创建一个垂直箱布局
VBox vBox = new VBox();
vBox.setPadding(new Insets(10));
vBox.setSpacing(10);
vBox.getChildren().addAll(label, button);
// 创建一个流布局
FlowPane flowPane = new FlowPane();
flowPane.setPadding(new Insets(10));
flowPane.setHgap(10);
flowPane.setVgap(10);
flowPane.getChildren().addAll(label, button);
// 创建一个场景
Scene scene = new Scene(flowPane, 400, 300);
// 设置场景到舞台
primaryStage.setScene(scene);
// 设置舞台标题
primaryStage.setTitle("My JavaFX App");
// 显示舞台
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
```
6. JavaFX 事件处理
JavaFX 提供了许多常用的事件,例如鼠标点击事件、键盘按下事件、窗口关闭事件等等。您可以使用这些事件处理程序来响应用户的操作。
以下是一些常用的 JavaFX 事件:
- MouseEvent:鼠标事件。
- KeyEvent:键盘事件。
- WindowEvent:窗口事件。
- ActionEvent:动作事件。
使用这些事件处理程序的示例代码如下:
```
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class MyJavaFXApp extends Application {
@Override
public void start(Stage primaryStage) {
// 创建一个标签
Label label = new Label("Hello, JavaFX!");
// 创建一个按钮
Button button = new Button("Click Me");
// 创建一个 StackPane 布局
StackPane root = new StackPane();
root.getChildren().addAll(label, button);
// 创建一个场景
Scene scene = new Scene(root, 300, 250);
// 设置按钮的鼠标点击事件处理程序
button.setOnMouseClicked((MouseEvent event) -> {
label.setText("Button Clicked");
});
// 设置窗口关闭事件处理程序
primaryStage.setOnCloseRequest((event) -> {
System.out.println("Window Closed");
});
// 设置场景到舞台
primaryStage.setScene(scene);
// 设置舞台标题
primaryStage.setTitle("My JavaFX App");
// 显示舞台
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
```
以上就是 JavaFX 的快速入门教程。希望可以帮助您了解 JavaFX 的基础知识,并开始构建自己的应用程序。
阅读全文