2012-01-05 13 views
0

スウィングアプレットが描画を完了した後、通知を受ける正しい方法は何ですか?私はアプレットがどれくらいの時間を取っているかを測定するためにいくつかのタイミングコードを書いており、グラフィックスを表示する時間を含んでいます。スウィングが終了したときに通知されます

すべての図面を実行するinit()メソッドの最後に、RunnableをSwingUtilities.invokeLaterに渡して10秒間スリープ状態にしました。私はグラフィックが表示される前に遅延を見た。私は描画が呼び出された後にキューに入れられることを理解していたので、グラフィックスの後に遅延が発生すると思っていました。私はこの睡眠テストコードをstart()に移動させ、同じ結果を得ました。

JavaScriptのアラートメッセージでテストしたところ、HTMLボディタグに配置されたonloadイベントがグラフィックスを描画する前にトリガーされているように見えます。

+1

* RunnableをSwingUtilities.invokeLaterに渡して10秒間スリープ状態にしました。* invokeLater()メソッドを使用してEDTにコードを追加して実行します。 EDTをスリープ状態にすると、Swingは再描画できません。 – camickr

+0

あなたの質問は何ですか? –

答えて

4

通常、init()メソッドは、アプレットのコンポーネント/レイアウトを初期化します。実際の描画はpaint()によって行われます。

あなたはsuper.paint(..)を呼び出し、それに独自のコードを追加してpaint()メソッドをオーバーライドすることができます

public void paint(Graphics g) { 
    super.paint(g); 
    // Add your code 
} 

あなたはSwingUtilities.invokeLater()に渡すRunnableinit()paint()

の間のどこかに呼び出されるので、あなたは気づいている遅延があります
+0

私のjApplet contentPaneには1つのjComponentがあります。私はjComponentのpaintComponentメソッドをオーバーライドし、実際にグラフィックスが描かれた後に遅延を見ました。ご協力いただきありがとうございます。 – rimsky

+0

ああ、そうです。コンテキスト情報の一部:http://docs.oracle.com/javase/tutorial/uiswing/painting/closer.html –

関連する問題