JavaFX更新textArea

时间:2013-09-03 16:58:17

标签: java user-interface javafx-2 javafx

我有一个简单的JavaFX应用程序,它有一个TextArea。我可以使用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函数中执行此操作?

1 个答案:

答案 0 :(得分:5)

您可以将需要写入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");
    }
}