[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[jfriends] DialogでのCursor変更
Dialog のサブクラスで Cursor を変更したかったので、
java.awt.Component#setCursor(Cursor) を使ってみました。
Borland JBuilder では、[新規 Dialog ] の機能で Dailog の
サブクラスを作ると、Panel が一つ貼り付けられています。
ボタンを押されたときに、
void button1_actionPerformed(ActionEvent e) {
Cursor prev = panel1.getCursor();
panel1.setCursor(new Cursor.WAIT_CURSOR);
// 何か時間のかかる処理
panel1.setCursor(prev);
this.dispose();
}
こんな処理をしたのですが、java.awt.TextArea とか
java.awt.TextField の上では Cursor が
デフォルト状態 (上のソースの prev ) に戻ってしまうので、
まず次のようなメソッドを Dialog のサブクラスに書きました。
void setCursor(Component compo, Cursor cur) {
if (compo == null || cur == null) return;
compo.setCursor(cur);
if (compo instanceof Container) {
Component[] childs = ((Container)compo).getComponents();
if (childs != null && childs.length > 0) {
for (int i=0; i<childs.length; i++) {
setCursor(childs[i], cur);
}
}
}
}
上記のボタンのイベントハンドラーを、こんな風に書き直しました。
void button1_actionPerformed(ActionEvent e) {
Cursor prev = panel1.getCursor();
setCursor(panel1, new Cursor.WAIT_CURSOR);
// 何か時間のかかる処理
setCursor(panel1, prev);
this.dispose();
}
java.awt.TextArea のスクロールバー以外の場所では、
Cursor.WAIT_CURSOR が表示されていたのでこれで済ませています。
皆さんはどうされていますか?
---------------------------------------------------------------
遠藤靖之 (えんどう やすゆき)
E-mail: y.endo@xxxxxxxxxx
URL: http://www.freepage.total.co.jp/jfriends/ (Java互助会ホームページ)
〒171-0022 豊島区南池袋 2-14-10 瀬川池袋ビル 3F
(株)エムティシー 技術営業部
TEL 03-5396-0521 / FAX 03-5396-0525