4

TextArea を持つ単純な JavaFX アプリケーションがあります。start() メソッド内で以下のコードを使用して、textArea のコンテンツを更新できます。

new Thread(new Runnable() {

    public void run() {

        for (int i = 0; i < 2000; i++) { 

            Platform.runLater(new Runnable() {
                public void run() {
                    txtarea.appendText("text\n");
                }
            });
        }
    }
}).start();

このコードは、text文字列を TextArea に 2000 回書き込むだけです。start() メソッドの外で実装されている関数からこの textArea を更新したいと思います。

public void appendText(String p){
    txtarea.appendText(p);
}

この関数は、JavaFX アプリケーションを使用して TextArea を更新する任意のプログラムから呼び出すことができます。appendText 関数内でこれを行うにはどうすればよいですか?

4

1 に答える 1

6

javafx.scene.control.TextAreaメソッドを保持するクラスへの参照を書き込む必要があるクラスに与えてから、public void appendText(String p)それを呼び出すことができます。メソッドが呼び出されたクラスからの指示も渡すことをお勧めします。

public class MainClass implements Initializable {
    @FXML
    private TextArea txtLoggingWindow;
    [...more code here...]
    public void appendText(String string, String string2) {
       txtLoggingWindow.appendText("[" + string + "] - " + string2 + "\n");
    }
}

public class SecondClass {
    private MainClass main;
    public SecondClass(MainClass mClass) {
        this.main = mClass;
    }
    public void callMainAndWriteToArea() {
        this.main.appendText(this.getClass().getCanonicalName(), "This Text Goes To TextArea");
    }
}
于 2013-09-04T06:49:37.560 に答える