- PR -

Swingでステータスバー

1
投稿者投稿内容
Shane
大ベテラン
会議室デビュー日: 2003/06/06
投稿数: 132
お住まい・勤務地: Vancouver, BC
投稿日時: 2003-08-18 18:19
JLabel を ステータスバー代わりにして、
時間のかかる処理のときに何かメッセージを出したいのですがうまくいきません。

JLabel statusBar = new JLabel();

statusBar.setText("処理中");
// 時間のかかる処理をする
statusBar.setText("");

時間のかかる処理の終わったあとで画面が描画されているようです。
setText のあとに statusBar.repaint() をしてみましたが
結果は同じでした。
お犬様
ベテラン
会議室デビュー日: 2003/01/26
投稿数: 67
投稿日時: 2003-08-18 19:55
引用:
Shinさんの書き込み (2003-08-18 18:19) より:

JLabel を ステータスバー代わりにして、時間のかかる処理のときに何かメッセージを出したいのですがうまくいきません。

statusBar.setText("処理中");
// 時間のかかる処理をする
statusBar.setText("");

時間のかかる処理の終わったあとで画面が描画されているようです。setText のあとに statusBar.repaint() をしてみましたが結果は同じでした。

推測ですが、イベントディスパッチスレッドで「時間のかかる処理」を行っていませんか? 時間のかかる処理は別のスレッドで行うか、JComponent の paintImmediately(int x, int y, int w, int h) paintImmediately(Rectangle r) を呼び出すかすれば解決すると思います。
Shane
大ベテラン
会議室デビュー日: 2003/06/06
投稿数: 132
お住まい・勤務地: Vancouver, BC
投稿日時: 2003-08-19 09:32
paintImmediately() で解決することができました。
こんなメソッドがあるのは知りませんでした。
ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)