2014-02-20 51 views
3

我正在搜索一個EventListener或將在我加載FXML文件時運行的方法。JavaFX 2.2 onLoad方法等效

JavaFX是否有類似Javascript onLoad的東西?

我只是想運行一個方法,將清除TextFields中的任何數據。

回答

8

當FXML加載

在您的控制器類中調用代碼,定義一個方法:

public void initialize(URL location, Resources resources) 

該方法將自動地被FXMLLoader加載FXML文件時被調用。

Introduction to FXML中有一個示例(我剛剛複製,稍作修改,在此處)。

FXML

<VBox fx:controller="com.foo.MyController" 
    xmlns:fx="http://javafx.com/fxml"> 
    <children> 
     <Button fx:id="button" text="Click Me!"/> 
    </children> 
</VBox> 

的Java

package com.foo; 

public class MyController { 
    @FXML private Button button; 

    @FXML 
    protected void initialize() 
     button.setOnAction(new EventHandler<ActionEvent>() { 
      @Override 
      public void handle(ActionEvent event) { 
       System.out.println("You clicked me!"); 
      } 
     }); 
    } 
} 

的觀察根據您的問題

你可能有怎樣FXML處理的輕微誤解的作品,因爲當你加載一個FXML文件,通常會創建一組新的節點(例外情況可能是將控制器設置爲FXMLLoader時,或者將FXMLLoader與依賴注入系統結合使用,但這兩種情況都不適用)。這意味着沒有必要「運行一個方法來清除TextField中的任何數據」,因爲文本字段是新節點,並且除非您將文本設置在FXML中,否則不會有任何數據。如果你只是想清除它,你不需要做)。

+0

謝謝!最後一個問題是,另一種情況是我想將一個id變量傳遞給第二個fxml控制器,並希望使用從MYSQL數據庫檢索的數據填充文本字段。現在我只需按一下按鈕即可檢索數據並填充字段。我會在哪裏放置方法/函數來運行它,以便它在創建fxml頁面時運行? – user2690440

+0

請參見[在FXML中傳遞參數](http://stackoverflow.com/questions/14187963/passing-parameters-javafx-fxml)。 – jewelsea