2016-05-13 26 views
0

enter code here我希望有一個標籤從未轉變被顯示(0.0)到正在顯示(1.0)標籤上的JavaFX淡出過渡沒有做任何事情

@FXML 
private Label welcomeLabel; 

public FadeTransition ft = new FadeTransition(Duration.millis(3000)); 


public void init(){ 

    ft.setNode(welcomeLabel); 

    ft.setFromValue(0.0); 
    ft.setToValue(1.0); 
    ft.setCycleCount(1); 
    ft.setAutoReverse(false); 

    ft.play(); 

} 

這裏是應用類

package com.ben.main; 

公共類應用程序的應用延伸{

private Stage primaryStage; 
private Scene loginScene; 
LoginUIController loginUIController = new LoginUIController(); 

public void start(Stage primaryStage) { 

    this.primaryStage = primaryStage; 

    initApp(); 
    loginUIController.init(); 

} 

private void initApp() { 

    Parent root = null; 

    try { 
     root = FXMLLoader.load(getClass().getResource("loginUIFXML.fxml")); 
    } catch (IOException e){ 
     System.err.println("There was an error... " + e); 
    } 

    loginScene = new Scene(root); 

    primaryStage.setTitle("project"); 
    primaryStage.setResizable(false); 
    primaryStage.setScene(loginScene); 
    primaryStage.show(); 


} 

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

}

我還需要將它添加到現場嗎?我遇到了麻煩,現在只需輸入內容即可更新編輯。

+0

我想1毫秒是太短,不會注意到任何更改... – jns

+0

不,我正在測試,看看它是否會與其他值。原始值是3000,也沒有工作。 –

+0

歡迎標籤添加到「場景」?你在哪裏調用'init'? – jns

回答

1

FXML loading process for controllers作品通過反思。它將調用名爲initialize()的方法。它不會知道任何關於名稱爲init()的方法,所以永遠不會這麼稱呼。所以你應該將你的方法名稱從init()更改爲initialize()

我在加載FXML文件後調用init方法。

是的,現在可以看到您添加到您的問題的附加代碼。

但是,您可以調用一個不是由FXMLLoader創建的控制器的新實例,而是調用由FXMLLoader創建的控制器上的init。您用new創建的控制器實例不以任何方式與場景圖關聯。

所以,不要這樣做,不要創建一個新的控制器new。而是使用由加載器創建的控制器。

如果你想獲得這是由FXMLLoader加載控制器的參考,你應該從裝載機得到它,通過下面的答案例證:

的其相關部分複製粘貼如下:

FXMLLoader loader = new FXMLLoader(
    getClass().getResource(
    "customerDialog.fxml" 
) 
); 

Stage stage = new Stage(StageStyle.DECORATED); 
stage.setScene(
    new Scene(
    (Pane) loader.load() 
) 
); 

CustomerDialogController controller = 
    loader.<CustomerDialogController>getController(); 
controller.initData(customer); 

只是適應上面的代碼模式。

+0

我在加載FXML文件後調用init方法。 –