をリフレッシュするためにSWING + JUNGを使用して、私は私のスレッドクラスの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のレイアウトと設定内容を作成するコードブロックがループ中にある場合、出力ウィンドウには表示されません。私はそれを前に置くとき、それはうまく動作しますが、それは私が望むものではありません。私はこのスレッドをメインクラスのSpringUtilities.invokeLater経由で実行します。
しばらく点滅しているため、ウィンドウがリフレッシュされていることがわかります。 私はどんなヒントも楽しみにしています。
_Don't_スリープ。 _do_ [Swingの並行性](http://docs.oracle.com/javase/tutorial/uiswing/concurrency/)を参照してください。 – trashgod
しかし、バックグラウンドスレッドのタスクの1つは、1秒ごとにデータを更新することです。それはループまたは何かのメインスレッドで毎秒起動する必要がありますか? – tomi891
[OK]を、私はループのスレッド実行のための答えを見つけた研究の後。 2つの重要なクラス:java.utilパッケージのTimerとTimerTask – tomi891