[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