2016-03-29 25 views
0

私はSceneBuilderでIntelliJでJavaFX 8とJDK 1.8.0_77を使用しています。私は基本的なピクセルエディタアプリケーションを作成しました。私は2つのウィンドウ(ステージ)を持っています。 1つは、グリッドペインに配置されたサークルオブジェクトの32×128マトリックスで、もう1つはメインのメッセージセンターです。JavaFX 8:起動時に自動的にファイルを入力する方法は?

あなたはでメッセージセンターウィンドウを見ることができます:私はメッセージセンターアプリを使用してメッセージを保存しても32x128だRGB LEDマトリクス上にスクロールしたいhttps://virtualartsite.wordpress.com/message-center/

。私はArrayListのメッセージオブジェクトの<>にメッセージを保存し、私はのArrayListのメッセージのにシリアル化ファイルを書き込みます。私はwriteObjArrayList()と入力readObjArrayList()を呼び出すファイルを呼び出すファイルを書き込みます。

私は正常にファイルを読み書きすることができるよ

ArrayListにすべてメッセージオブジェクトを.add、起動時にので、ユーザが編集またはから任意のメッセージを削除することができますviewMessagesコンボボックス。私はreadObjArrayList()を呼び出すためのボタンイベントを使用している場合はこれまでのところ、私はそうすることができます。これが問題です。

アプリが起動したとき、私は、「舞台裏」ファイルを読むことをお勧めします。プログラムの起動時にファイルを自動的に読み込みたい。ユーザーはボタンをクリックする必要はありません。

私の最高のアイデアは、コンパイルが、任意のコードを実行するためには表示されません。次のコードを使用していた:

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

を私はのWindowEventを考えのWindowEvents =#OnShowで解雇されるだろうコンボボックス用viewMessages(FX:ID)

お知らせください。

ありがとうございました。

答えて

1

javadocによると、WindowEventは、ウィンドウのアクションの表示/非表示に関連しています。 NodeクラスはWindowsではないため、WindowEventハンドラをインストールしても効果はありません。

あなたがSceneBuilderを使用しているので、私はあなたが定義されfx:controllerクラスを持つFXMLファイルを持っている必要があることを前提としています。任意のコントローラクラスで、FXMLファイルが処理された直後に呼び出される、非argのinitialize()メソッドを追加できます。

public class YourController { 
    @FXML 
    ComboBox viewMessages; 

    public void initialize() { 
     readObjArrayList(); 
    } 

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

この最も優れた解決策が初めて実行されました。 Javaへの初心者のために、FYIとコードの背景は、現在および将来、非常に役立ちます。感謝します。 – sgroen

+0

@sgroen答えが得意だった場合は、答えを受け入れることでそれを確認してください(投票の直下のチェックマークをクリックしてください)。これは、今後同じ問題を抱えているユーザーに役立ちます。 – ItachiUchiha

+0

@ItachiUchihaチップありがとう。 – sgroen

関連する問題