FXML与控制器(Java代码)

每个FXML只有一个控制器(一个java类),用以响应页面的各种事件,就像html与js的关系。


引入控制器

在JavaFX Scene Builder设计视图中选中视图的根结点(每个视图只有一个根结点),在右边选择“代码”属性面板,第一个属性为“控制器类”,输入类路径,如t1.T1Controller。


使用控制器中的方法

选中视图树(分层结构)中的任意节点,在右边面板选择“代码”属性面板,有很多事件可供设置,其值为控制器中的方法名前面加上一个#。


以下为控制器的代码


[java]  view plain copy
  1. package t1;  
  2.   
  3. /* 
  4.  * To change this template, choose Tools | Templates 
  5.  * and open the template in the editor. 
  6.  */  
  7.   
  8. import java.net.URL;  
  9. import java.util.ResourceBundle;  
  10.   
  11. import javafx.event.ActionEvent;  
  12. import javafx.fxml.FXML;  
  13. import javafx.fxml.Initializable;  
  14. import javafx.scene.control.Button;  
  15.   
  16. /** 
  17.  *  
  18.  * @author root 
  19.  */  
  20. public class T1Controller implements Initializable {  
  21.   
  22.     @FXML  
  23.     private Button btn1;  
  24.     @FXML  
  25.     private Button btn2;  
  26.   
  27.     @FXML  
  28.     private void btn1Action(ActionEvent event) {  
  29.         System.out.println("You clicked btn1!");  
  30.     }  
  31.   
  32.     @FXML  
  33.     private void btn2Action(ActionEvent event) {  
  34.         System.out.println("You clicked btn2!");  
  35.     }  
  36.   
  37.     @Override  
  38.     public void initialize(URL url, ResourceBundle rb) {  
  39.         // TODO  
  40.     }  
  41. }  


以下为FXML源文件中的配置

[html]  view plain copy
  1. xml version="1.0" encoding="UTF-8"?>  
  2.   
  3. import java.lang.*?>  
  4. import java.util.*?>  
  5. import javafx.geometry.*?>  
  6. import javafx.scene.control.*?>  
  7. import javafx.scene.layout.*?>  
  8. import javafx.scene.paint.*?>  
  9. import javafx.scene.shape.*?>  
  10. import javafx.scene.web.*?>  
  11.   
  12. <BorderPane id="BorderPane" prefHeight="459.0" prefWidth="600.0"   
  13. stylesheets="T1.css" styleClass="bg"   
  14.  xmlns:fx="http://javafx.com/fxml" fx:controller="t1.T1Controller">   
  15.  <bottom>  
  16.     <HTMLEditor htmlText="<html><head>head><body contenteditable="true">" minWidth="485.0" opacity="1.0" prefHeight="153.0" prefWidth="597.0" />  
  17.   bottom>  
  18.   <center>  
  19.     <TextArea prefHeight="351.0" prefWidth="572.0" text="this is center this is center this is center   
  20. this is center this is center this is center   
  21. this is center this is center this is center   
  22. this is center this is center this is center   
  23. this is center this is center this is center this is center this is center this is center this is center this is center this is center this is center this is center this is center this is center this is center this is center this is center this is center this is center this is center this is center this is center this is center this is center this is center this is center " wrapText="true" />  
  24.   center>  
  25.   <left>  
  26.     <ListView prefHeight="379.0" prefWidth="116.0" />  
  27.   left>  
  28.   <padding>  
  29.     <Insets bottom="2.0" left="2.0" right="2.0" top="2.0" />  
  30.   padding>  
  31.   <right>  
  32.     <TableView prefHeight="291.0" prefWidth="78.0">  
  33.       <columns>  
  34.         <TableColumn prefWidth="75.0" text="列 X" />  
  35.       columns>  
  36.     TableView>  
  37.   right>  
  38.   <top>  
  39.     <FlowPane prefHeight="25.0" prefWidth="601.0">  
  40.       <children>  
  41.           
  42.         <Button fx:id="btn1" mnemonicParsing="false" onAction="#btn1Action" style="-fx-background-color:red;" text="Button1" />  
  43.         <Button fx:id="btn2" mnemonicParsing="false" onAction="#btn2Action" text="Button2" styleClass="bg2"  />  
  44.         <Line endX="100.0" startX="-100.0" />  
  45.       children>  
  46.       <padding>  
  47.         <Insets bottom="3.0" left="5.0" right="5.0" top="3.0" />  
  48.       padding>  
  49.     FlowPane>  
  50.   top>  
  51. BorderPane>  

你可能感兴趣的:(java)