每个FXML只有一个控制器(一个java类),用以响应页面的各种事件,就像html与js的关系。
引入控制器
在JavaFX Scene Builder设计视图中选中视图的根结点(每个视图只有一个根结点),在右边选择“代码”属性面板,第一个属性为“控制器类”,输入类路径,如t1.T1Controller。
使用控制器中的方法
选中视图树(分层结构)中的任意节点,在右边面板选择“代码”属性面板,有很多事件可供设置,其值为控制器中的方法名前面加上一个#。
以下为控制器的代码
- package t1;
-
-
-
-
-
-
- import java.net.URL;
- import java.util.ResourceBundle;
-
- import javafx.event.ActionEvent;
- import javafx.fxml.FXML;
- import javafx.fxml.Initializable;
- import javafx.scene.control.Button;
-
-
-
-
-
- public class T1Controller implements Initializable {
-
- @FXML
- private Button btn1;
- @FXML
- private Button btn2;
-
- @FXML
- private void btn1Action(ActionEvent event) {
- System.out.println("You clicked btn1!");
- }
-
- @FXML
- private void btn2Action(ActionEvent event) {
- System.out.println("You clicked btn2!");
- }
-
- @Override
- public void initialize(URL url, ResourceBundle rb) {
-
- }
- }
以下为FXML源文件中的配置
- xml version="1.0" encoding="UTF-8"?>
-
- import java.lang.*?>
- import java.util.*?>
- import javafx.geometry.*?>
- import javafx.scene.control.*?>
- import javafx.scene.layout.*?>
- import javafx.scene.paint.*?>
- import javafx.scene.shape.*?>
- import javafx.scene.web.*?>
-
- <BorderPane id="BorderPane" prefHeight="459.0" prefWidth="600.0"
- stylesheets="T1.css" styleClass="bg"
- xmlns:fx="http://javafx.com/fxml" fx:controller="t1.T1Controller">
- <bottom>
- <HTMLEditor htmlText="<html><head>head><body contenteditable="true">