2016-03-29 53 views
0

我在使用SceneBuilder的IntelliJ中使用JavaFX 8和JDK 1.8.0_77。我創建了一個基本的像素編輯器應用我有兩個窗口(階段)。一個是放置在Grid Pane中的Circle Objects的32x128矩陣,另一個是Main中的Message Center。JavaFX 8:如何在啓動時自動輸入文件?

你可以看到在消息中心窗口:https://virtualartsite.wordpress.com/message-center/

我想用信息中心應用程序保存信息和滾動他們上的RGB LED矩陣這也是32x128。我保存的消息在的ArrayList <>消息對象和我寫的ArrayList中的信息的到一個序列化的文件。我寫的文件調用writeObjArrayList()並輸入文件調用readObjArrayList()。

我能夠成功地寫入和讀取文件和。新增所有消息對象的的ArrayList在啓動,因此用戶可以編輯或刪除任何消息view消息 ComboBox。但到目前爲止,我只能這樣做,如果我使用按鈕事件來呼叫readObjArrayList()。這就是問題。

我想在應用程序啓動時讀取「幕後」文件。我想在程序啓動時自動讀取文件;用戶不必點擊按鈕。

我最好的想法是使用下面的代碼編譯,但似乎並沒有執行任何代碼:

public void windowEvents(WindowEvent event){ 
    if(event.getSource() == viewMessages) readObjArrayList(); 
} 

我想到了一個WindowEvent將與的WindowEvent =#OnShow中被解僱 for ComboBox,viewMessages(FX:ID)

請指教。

感謝您的幫助。

回答

1

根據javadoc,WindowEvent涉及窗口顯示/隱藏操作。由於Node類不是Windows,因此在其上安裝WindowEvent處理程序不會產生任何影響。

由於您使用的是SceneBuilder,我假定您必須有一個定義了fx:controller類的FXML文件。在任何控制器類中,可以添加一個非參數initialize()方法,該方法在FXML文件處理完畢後立即調用。

public class YourController { 
    @FXML 
    ComboBox viewMessages; 

    public void initialize() { 
     readObjArrayList(); 
    } 

    private void readObjArrayList() { 
     ... 
    } 
} 
+0

這個最優秀的解決方案第一次工作。作爲Java的新手,背景的FYI和代碼現在和將來都非常有用。謝謝。 – sgroen

+0

@sgroen如果您的答案對您有所幫助,請接受答案以確認答案(點擊投票下方的勾號)。這將有助於未來遇到同樣問題的用戶。 – ItachiUchiha

+0

@IchichiUchiha感謝提示。 – sgroen

相關問題