トリッキーコードネット トップへ戻る   C/C++, Java, Perl, PHP, JavaScript, アルゴリズム, ショートコーディング, IOCCCコードの解説, 等々

サイト情報

トリッキーなコード

7行プログラミング

物凄いコード集

アルゴリズム

データ構造

C/C++な話題

コードサンプル

ツール/環境構築

開発ノウハウ 等

ネタ/ジョーク集

おススメ書籍/サイト

サイトTOP >> コードサンプル >> イベントリスナ,アダプタクラス,インナークラス,無名インナークラス ※管理人のメモ用ページです。

イベントリスナ ⇒ アダプタクラス ⇒ インナークラス ⇒ 無名インナークラス について


イベントリスナ

イベントリスナ インターフェースのみだと、使わないイベントでも再定義が必要。(∵abstractだから)
import java.applet.*;
import java.awt.*;
import java.awt.event.*;

public class TestApplet03 extends Applet
  implements MouseListener, MouseMotionListener {

    String str;
    Point pt;

    public void init(){
        addMouseListener(this);
        addMouseMotionListener(this);
        str = "---";
    }

    public void mouseClicked(MouseEvent me){
        str = "クリック";
        pt = me.getPoint();
        repaint();
    }

    public void mouseEntered(MouseEvent me){
        str = "入って来る";
        pt = me.getPoint();
        repaint();
    }

    public void mouseExited(MouseEvent me){
        str = "出て行く";
        pt = me.getPoint();
        repaint();
    }

    public void mousePressed(MouseEvent me){
        str = "押された";
        pt = me.getPoint();
        repaint();
    }

    public void mouseReleased(MouseEvent me){
        str = "離された";
        pt = me.getPoint();
        repaint();
    }

    public void mouseDragged(MouseEvent me){
        str = "ドラッグ中";
        pt = me.getPoint();
        repaint();
    }

    public void mouseMoved(MouseEvent me){
        str = "動いてる";
        pt = me.getPoint();
        repaint();
    }

    public void paint(Graphics g){
        g.drawString(str, 10,10);
        if (pt != null) {
            g.drawString("(" + pt.x + "," + pt.y + ")", 10,40);
        }
    }
}

アダプタクラス

特定のリスナインターフェース内の、全てのメソッドの空実装を提供 ⇒ プログラマは、使わないイベントの再定義がいらなくなる。 (※ ただし、メソッド名が間違っていてもエラーが出なくなるので、注意すること)
import java.applet.*;
import java.awt.*;
import java.awt.event.*;

public class TestApplet03 extends Applet {

    public void init(){
        setBackground(Color.red);
        addMouseListener(new MyMouseAdapter(this));
    }
}

class MyMouseAdapter extends MouseAdapter{
    TestApplet03 applet;

    public MyMouseAdapter(TestApplet03 in_applet){
        applet = in_applet;
    }

    public void mousePressed(MouseEvent me){
        applet.setBackground(Color.green);
        applet.repaint();
    }

    public void mouseReleased(MouseEvent me){
        applet.setBackground(Color.red);
        applet.repaint();
    }
}

インナークラス

以下のソースをコンパイルすると、 「MyMouseAdapter.class」「TestApplet03$MyMouseAdapter.class」 の2ファイルが生成される。
import java.applet.*;
import java.awt.*;
import java.awt.event.*;

public class TestApplet03 extends Applet {

    public void init(){
        setBackground(Color.red);
        addMouseListener(new MyMouseAdapter());
    }

    //インナークラス
    class MyMouseAdapter extends MouseAdapter{

        public void mousePressed(MouseEvent me){
            setBackground(Color.green);
            repaint();
        }

        public void mouseReleased(MouseEvent me){
            setBackground(Color.red);
            repaint();
        }
    }
}

無名インナークラス

以下のソースをコンパイルすると、「TestApplet03$1.class」ファイルが生成される。
import java.applet.*;
import java.awt.*;
import java.awt.event.*;

public class TestApplet03 extends Applet {

    public void init(){
        setBackground(Color.red);
        addMouseListener(new MouseAdapter(){
             public void mousePressed(MouseEvent me){
                setBackground(Color.green);
                repaint();
            }

            public void mouseReleased(MouseEvent me){
                setBackground(Color.red);
                repaint();
            }
        });
    }
}
         このエントリーをはてなブックマークに追加   


作業効率化・ライフハックのオススメ記事




コンピュータ・テクノロジーのオススメ記事





恋愛・人間関係のオススメ記事




※ 当サイトは、トップページからリンクで辿る事の出来るページに限り、リンクフリーです。
※ 当サイトの閲覧/利用によって生じた如何なる損害も、当サイト管理人は責任を負いません。
※ 当サイトの内容を転載される場合は、当サイトへのリンクをお願い致します。