スレッド クラスに次の Java コードがあります。
@Override
public void run() {
JFrame window = new JFrame("Visualization POC");
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
while (true) {
window.setVisible(false);
Layout<Node,Edge> layout = new CircleLayout<Node, Edge>(graph);
layout.setSize(new Dimension(300, 300));
BasicVisualizationServer<Node, Edge> vv = new BasicVisualizationServer<Node, Edge>(layout);
vv.setPreferredSize(new Dimension(350, 350));
vv.getRenderContext().setVertexFillPaintTransformer(new NodeColorTransformer());
vv.getRenderContext().setEdgeDrawPaintTransformer(new EdgeColorTransformer());
window.getContentPane().add(vv);
window.pack();
window.setVisible(true);
try {
Thread.sleep(ONE_SECOND);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
グラフの視覚化の状態を更新するために使用したいのですが、大きな問題に行き詰まりました。JFrame のレイアウトと設定内容を作成するコードのブロックが while ループ内にある場合、出力ウィンドウに表示されません。しばらく前に置くとうまくいきますが、それは私が望むものではありません。メインクラスで SpringUtilities.invokeLater を介してこのスレッドを実行します。
しばらく点滅しているので、ウィンドウが更新されていることがわかります。何かヒントがあればお待ちしております。