アップデート:
まだ同じ問題があり、メイン アプリ コードのソースが改訂されています: http://pastebin.com/fLCwuMVq
UIをブロックする何かがあるに違いありませんがCoreTest
、あらゆる種類のもの(非同期xmlrpcリクエスト、非同期httpリクエスト、ファイルioなど)を実行しています。すべてを入れてみましrunLater
たが、役に立ちません。
更新 2:
コードが実行され、出力が正しく生成されることを確認しましたが、UI コンポーネントは何年もの間それを表示できません
更新 3:
OK私はそれを修正しました。理由はわかりませんが、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要素にデータが書き込まれ、データが表示されませんスクリーン。