【问题标题】:JavaFX update textAreaJavaFX 更新 textArea
【发布时间】:2013-09-07 00:06:32
【问题描述】:

我有一个简单的 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 函数中执行此操作?

【问题讨论】:

  • 你的问题不是很清楚。你想达到什么目的?是什么阻止你调用你的方法?
  • 如果我在for循环中调用appendText方法,例如:for(int i=0; i
  • 你能展示一个重现问题的简短例子吗?

标签: java user-interface javafx-2 javafx


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2016-08-06
    • 1970-01-01
    • 2018-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-20
    • 2021-02-06
    • 2012-04-09
    相关资源
    最近更新 更多