[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends] Re: マウスの位置の取得は




> ---------------------------------------
>	class SymMouse extends java.awt.event.MouseAdapter
>	{
>		public void mousePressed(java.awt.event.MouseEvent event)
>		{
>			Object object = event.getSource();
>			if (object == KabunToTaibun.this)
>				KabunToTaibun_MousePress(event);
>		}
>	}
>	void KabunToTaibun_MousePress(java.awt.event.MouseEvent event)
>	{
>		int xx=event.x;//ここがエラーです

        int xx = event.getX(); // 変数名 x は private なので参照できません。
                               // なので、getX() メソッドを呼びます。
>	}
>----------------------------------------

>関連して、implements MouseListener として、マウスを使う方法がわかりませ
>ん。
>以前は以下のようにやっていたのですが、
>    public boolean mouseDown(Event e,int x,int y)
>    {
>        int xx=x;
>        return true;
>    }
>新しいイベント処理の例など示していただけないでしょうか。

基本はこうです。まず、イベントの通知元(ボタンとかウインドウとか)と、
イベントを処理するクラスは別れています。
(実は同じでも良いのですが、最初から同じクラスに書いてしまうと混乱すると思います)

まずやることは、イベントを処理するクラスを書く事です。
イベントを処理するクラスでは、
java.awt.event パッケージの中の hogehogeListener インターフェースを実装 (implements) します。
( "hogehoge" のところは現実にはイベント名になります)
これでイベントを"受信"できるようになりました。

つぎに、このイベントを処理するクラスを、通知元(ボタンとか)に登録しなければなりません。
これが addHogehogeListener() メソッドです。
(しつこいようですが "Hogehoge" のところは現実にはイベント名になります)

この仕組みは最初は理解しにくいかも知れませんが、
自分で JavaBeans (ボタンとかそういうの) を書いてみると仕組みが良く分かります。
自分独自のイベントを作って、通知させることもできます。

(例えば、ボタンが押される直前のイベントと、押されている時のイベントと、
放された後のイベントの3つを自分で作って、通知できるようにしたとします。
この通知を受け取るクラスでは、ボタンを押される直前にやる作業を記述できます。
あとのイベントについても同様です)

>または例の載っている本を教えて下さい。

私も JDK 1.1 のイベントモデルを平易に解説した本をずっと探していました。
最近本屋に行く機会が無いのですが、
「Java入門第2版」と「Javaのからくり」に期待しています。(読まれた方フォローお願いします)
------------------------------------------------------------------
遠藤靖之 (えんどう やすゆき) <yasuyuki@xxxxxxxxxx>
http://www.freepage.total.co.jp/jfriends/ (Java互助会ホームページ)
株式会社タイムインターメディア 情報通信サービス部 TEL 03-5362-9009
〒162-0065 新宿区住吉町3-11 新宿スパイアビル      FAX 03-5362-9008