简述

使用 Gradle 构建 Java 工程时,没有 JavaFx 的选项,所以需要自己添加。

使用Gradle 构建Java 工程

在IntelliJ IDEA 中使用 Gradle 工程构建完成后如下:

java项目为什么有gradle目录 gradle javafx_控件

添加 JavaFx 文件

如下,在资源文件夹下新建FXML File 文件

java项目为什么有gradle目录 gradle javafx_控件_02


打开刚才新建的文件,在红圈部分有TextScene Builder 两个选项卡,Text 显示是界面的描述,描述语言为xml,Scene Builder 显示的是预览界面,当然也可在里面编辑,想要什么排版布局,或者控件,直接拖拽出来就可以了。

java项目为什么有gradle目录 gradle javafx_Gradle_03


将图下圈起来部分拖至箭头指向处

java项目为什么有gradle目录 gradle javafx_JavaFx_04


将Button 拖至界面空白处,也就是上一个动作拖出来的 AnchorPane面板上,使Button 的fxid 命名为button,找到 On Action,在里面填入 evenButton.

java项目为什么有gradle目录 gradle javafx_Gradle_05


再用相同的方法拖拽出 TextField ,将该控件fxid命名为 text,并且双击该控件,输入HelloWold 然后回车。

java项目为什么有gradle目录 gradle javafx_Java_06

添加 Java 类

按图示新建 Java Class,然后在弹出框中选择 JavaFXApplication

java项目为什么有gradle目录 gradle javafx_Java_07


如图

java项目为什么有gradle目录 gradle javafx_java项目为什么有gradle目录_08


新建完成后显示如图

java项目为什么有gradle目录 gradle javafx_Java_09

重新回到SerialAssistant.fxml文件中,选择Text 显示,如图添加 fx:controller="SerialAssistant",如果已存在是不用添加的,SerialAssistant 就是刚才新建Java 的类名,

java项目为什么有gradle目录 gradle javafx_JavaFx_10


下面标签中有fx:id "button"fx:id="text"就是界面上拖拽的两个控件名,notallow="#evenButton"是刚才在界面上添加的button 的动作,将鼠标放在红圈部分的 text上,按下 alt+enter 快捷键,弹出菜单,再按下enter 键

java项目为什么有gradle目录 gradle javafx_Gradle_11


IDEA 便自动帮我们将 text 控件添加至 SerialAssistant 类中了。

java项目为什么有gradle目录 gradle javafx_Java_12


使用相同的方法,将button 和evenButton 自动添加至 SerialAssistant 类中,完成后如下

java项目为什么有gradle目录 gradle javafx_Java_13


最后将 SerialAssistant 类改成如下样子

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.stage.Stage;

import java.io.IOException;

public class SerialAssistant extends Application {

    public Button button;
    public TextField text;

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {
        Parent root = null;
        try {
            root = FXMLLoader.load(getClass().getResource("SerialAssistant.fxml"));
            primaryStage.setTitle("SerialAssistant");
            primaryStage.setScene(new Scene(root));
            primaryStage.show();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public void evenButton(ActionEvent actionEvent) {
        System.out.println(text.getText());
    }
}

运行,点击button ,终端将会打印输入框中的文字。

java项目为什么有gradle目录 gradle javafx_java项目为什么有gradle目录_14