2011-02-27 13 views
3

スイングのrepaintの完了を待つことができます。スイングの要素の再描画の完了を待つ

例:

frame.repaint(); 
wait_for_repaint_to_finish(); 
//work 

私はこのようなものがあります:

SwingUtilities.invokeAndWait(new Runnable() { 

    public void run() { 
     try { 
      frame.repaint(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
}); 

が、これはそれを行うための正しい方法ですか?

+0

あなたが達成しようとしていることを知るのに役立つかもしれません。 – trashgod

+0

再フォーマットされたコード。間違っている場合は元に戻してください。 – trashgod

答えて

2

あなたはこのようなものが必要なのか、なぜ質問はありますか?なぜフレーム全体を再塗り潰して、それが完全であるのを待つのですか?あなたがしようとしていることが分かっているなら、私たちはおそらくより良い提案をすることができます。

repaint()は、ペイントを行う予定です。 RepaintManagerは複数のペイント要求を一度に統合してpaintngをより効率的にすることができます。

はあなたが本当に再描画を強制する必要がある場合は、設計上の問題を解決するために

JComponent.paintImmediately(...); 

を使用することができます。しかし、これは最後の手段としてのみ使用されるべきではない、と述べました。

1

あなたはpaintComponent()を上書きすることができます。

@Override 
protected void paintComponent(Graphics g) { 
    super.paintComponent(g); 
    ... 
    // repaint finished here 
} 
関連する問題