IntelliJ IDEA下JavaFX scenebuilder的使用

首先新建一个JavaFXproject
IntelliJ IDEA下JavaFX scenebuilder的使用_第1张图片

然后看到sample这个package里面有三个文件,分别是Main.java,Controller.java,sample.fxml,我们主要使用fxml中的scenebuilder来构建界面,使用Controller来控制fxml中的界面构件

现在删除其中的GridPane,添加一个AnchorPane,并在Text中加入fx:controller="sample.Controller"来指定Controller,IntelliJ IDEA下JavaFX scenebuilder的使用_第2张图片

加到Text中AnchorPane的最后

拖动一个Button到AnchorPane中并设定fxID

回到Controller,修改

package sample;

public class Controller {
    
}

package sample;

import javafx.fxml.Initializable;
import java.net.URL;
import java.util.ResourceBundle;

public class Controller implements Initializable{
    public void initialize(URL location, ResourceBundle resources)
    {

    }
}

其中的Initializable接口里面包含了一个方法initialize(java.net.URL location, java.util.ResourceBundle resources),官方文档的解释如下

Called to initialize a controller after its root element has been completely processed.

即重写这个方法可以用作Controller的初始化以及根组件的运行,可以在这个方法里面初始化你的各种组件

定义按钮变量以及事件方法

package sample;

import javafx.fxml.Initializable;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.net.URL;
import java.util.ResourceBundle;

public class Controller implements Initializable{
    public Button button;
    public void initialize(URL location, ResourceBundle resources)
    {

    }
    public void Button_Click(ActionEvent actionEvent)
    {
           System.out.println("Button Click!");
    }
}

回到scenebuilder关联方法跟点击事件
IntelliJ IDEA下JavaFX scenebuilder的使用_第3张图片
main中设置窗口大小为600*400,运行成功

primaryStage.setScene(new Scene(root, 600, 400));

IntelliJ IDEA下JavaFX scenebuilder的使用_第4张图片
要注意的是,按alt+enter引用包的时候,要保证引用正确的包,如事件处理引用的包是import javafx.event.ActionEvent而不是import java.awt.event.ActionEvent,否则会显示fxml无法识别该方法

你可能感兴趣的:(Java)