• ベストアンサー

マウスのイベントリスナーについて

現在awtのAppletを使用してプログラムを作成しています。 その中でmouseExitedを使ってマウスがAppletの外に出たときにだけ アプレット上のラベルを消えるようにしたいのですがmouseExitedは マウスがApplet上のラベルやボタンなどのコンポーネント上にきた時にも反応してしまいます。 どうにかしてマウスがAppletの外に出たときにだけ反応するようにできないでしょうか?ご存知の方よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

イベントを発生させないという方法ではないのですが、 イベントが発生した時に、マウスがアプレットの外だったら処理をしないという方法です。 Componentのcontainsメソッドを利用します。 public class Ap extends Applet { private static final long serialVersionUID = 1L; private Label label = new Label(); public Ap() { super(); } /** * This method initializes this * @return void */ public void init() { this.setSize(300, 200); this.add(new Button(), null); this.add(new TextField(), null); this.add(new Checkbox(), null); this.add(this.label, null); this.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseExited(java.awt.event.MouseEvent e) { //イベントの発生は、アプレットから Applet applet = (Applet)e.getComponent(); //マウスのPointを取得 Point point = e.getPoint(); //マウスの座標が、アプレットの外であるか? if (applet.contains(point) == false) { Ap.this.label.setText("アプレットの外にでました"); } else { //イベントを消費 e.consume(); } } }); } }

alice-su
質問者

お礼

ありがとうございます!!問題が解決しました。 数日インターネットで探して解決策を見つけられなかったので 手探りで色々なメソッドなどで試しても実現できていなかったので 本当に感謝しています。 こんなスマートな方法で実現できるとは・・少し無知が恥ずかしいですが丁寧にソースまで載せて頂き大変参考になりました。 ありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A