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

先让东西显示出来

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

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 方法中启动:

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:布局,布局是用来约束控件等显示的方式、位置等的节点,比如垂直布局、水平布局等。
  • 其他:诸如图表、图形等,都是一种节点。

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

基本组件的使用

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

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(); // 让窗体显示出来
    }
}
复制代码

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

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

为按钮添加点击事件

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

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(); // 让窗体显示出来
    }
}
复制代码

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

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享