JavaFX 系列教程【2】-第一个 JavaFX 程序及窗

先让东西显示出来

我们首先创建一个窗体程序,程序必须继承自 javafx.application.Application 类,并实现相关接口:

1
2
3
4
5
6
7
8
9
10
11
java复制代码package com.codelideliwan;

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

public class FirstApp extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
primaryStage.show(); // 让窗体显示出来
}
}

然后,我们在 main 方法中启动:

1
2
3
4
5
6
7
java复制代码package com.codelideliwan;

public class Main {
public static void main(String[] args) {
FirstApp.launch(FirstApp.class, args);
}
}

运行 main 方法即可看见弹出的窗口了。只不过这个窗口是一个空白窗口,里面什么也没有。

需要注意的是,Stage 即是窗口类,表示一个窗口,我们可以使用方法内提供的窗口,也可以自己 new 一个窗口。

概念介绍

这里介绍几个概念:

  • Stage:窗口,表示显示出来的窗口,Stage 在调用 show 方法的时候才会显示出来。
  • Scene:场景,如果你想在窗口上显示任何内容,这个内容都必须放在 Scene 上面。
  • Node:节点,所有依附于 Scene 显示出来的内容,都是节点,所有的控件、布局等也都是节点。
  • Controls:控件,控件是用来进行操作的节点,比如按钮、复选框等都属于空间。
  • Layouts:布局,布局是用来约束控件等显示的方式、位置等的节点,比如垂直布局、水平布局等。
  • 其他:诸如图表、图形等,都是一种节点。

下面我们就需要基于以上的介绍给窗口加点料了。

基本组件的使用

我们需要给窗口添加一个按钮,并添加一行文字,文字在按钮的下方:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
java复制代码package com.codelideliwan;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class FirstApp extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
primaryStage.setTitle("Hello Stage"); // 设置窗口显示的名称

VBox vBox = new VBox(); // 添加一个垂直布局
vBox.getChildren().add(new Button("I am a button")); // 添加一个按钮
vBox.getChildren().add(new Label("I am a label")); // 添加一行文字

Scene scene = new Scene(vBox); // 创建一个 scene,并显示垂直布局
primaryStage.setScene(scene); // 让窗体显示对应的 scene
primaryStage.show(); // 让窗体显示出来
}
}

再次运行,即可发现显示出来了一个按钮和一个文字。

现在发现,点击按钮后没有任何反应,我想点击按钮的时候,下面给我计数点击了多少次,该怎么办呢?

为按钮添加点击事件

可以给按钮添加相应的点击事件,比如点击了以后下面显示点击了多少次:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
java复制代码package com.codelideliwan;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

import java.util.concurrent.atomic.AtomicInteger;

public class FirstApp extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
primaryStage.setTitle("Hello Stage"); // 设置窗口显示的名称

VBox vBox = new VBox(); // 添加一个垂直布局
Button button = new Button("I am a button");
Label label = new Label("I am a label");
vBox.getChildren().addAll(button, label);

AtomicInteger count = new AtomicInteger(0); // 这里使用一个 AtomicInteger 来计数

// 给按钮添加点击事件
button.setOnMouseClicked(event -> {
label.setText("you clicked " + count.incrementAndGet() + " times.");
});

Scene scene = new Scene(vBox); // 创建一个 scene,并显示垂直布局
primaryStage.setScene(scene); // 让窗体显示对应的 scene
primaryStage.show(); // 让窗体显示出来
}
}

现在,点击按钮就能看到对应的文字变化啦!

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%