更新:
仍然有同样的问题,主应用程序代码的修改来源:http: //pastebin.com/fLCwuMVq
一定有一些东西CoreTest
会阻止 UI,但它会做各种各样的事情(异步 xmlrpc 请求、异步 http 请求、文件 io 等),我试着把它全部放进去runLater
,但它没有帮助。
更新 2:
我验证了代码运行并正确产生输出,但 UI 组件无法显示它很长时间
更新 3:
好的,我修好了。我不知道为什么,但没有关于 JavaFX 的指南这么说,这非常重要:
始终将程序逻辑放在与 Java FX 线程不同的线程中
我曾与 Swing 一起使用,JTextArea
但由于某种原因,它不适用于 JavaFX。
我尝试调试它并.getText()
在每次写入后返回似乎正确写入的字符,但TextArea
GUI 中的实际显示没有文本。
我忘了以某种方式刷新它吗?
TextArea ta = TextAreaBuilder.create()
.prefWidth(800)
.prefHeight(600)
.wrapText(true)
.build();
Console console = new Console(ta);
PrintStream ps = new PrintStream(console, true);
System.setOut(ps);
System.setErr(ps);
Scene app = new Scene(ta);
primaryStage.setScene(app);
primaryStage.show();
和Console
班级:
import java.io.IOException;
import java.io.OutputStream;
import javafx.scene.control.TextArea;
public class Console extends OutputStream
{
private TextArea output;
public Console(TextArea ta)
{
this.output = ta;
}
@Override
public void write(int i) throws IOException
{
output.appendText(String.valueOf((char) i));
}
}
注意:这是基于此答案的解决方案,我删除了我不关心但未修改的位(除了从 Swing 更改为 JavaFX),它具有相同的结果:数据写入 UI 元素,没有数据显示屏幕。