java—監聽器 (55)

來源:互聯網
上載者:User

標籤:

監聽器存在以下對象

監聽者:XxxxxListener - 所的監聽者是的介面。

被監聽者 :任意對象都可以成為被監聽者 - 早已經存在。

監聽到的事件:XxxxEvent- 永遠是一個具體類,用來放監聽到的資料

                            裡面都有一個方法叫getSource() – 返回的是監聽到對象。

案例一:

package cn.hx.demo;

public class MyFrame extends JFrame {

    public MyFrame() {

        JButton btn = new JButton("你好");  //被監聽者

        System.err.println("btn: is:"+btn.hashCode());

        btn.addActionListener(new MyListener() ); //監聽者

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        //擷取容器

        Container con= getContentPane();

        //設定布局

        con.setLayout(new FlowLayout());

        con.add(btn);

        setSize(300, 300);

        setVisible(true);

    }

    public static void main(String[] args) {

        new MyFrame();

    }

    //實現一個監聽者

    class MyListener implements ActionListener{

        //監聽方法

        public void actionPerformed(ActionEvent  e) {

            System.err.println("我監聽到了:"+e.getSource()hashCode());  //可以從監聽到的事件中獲監聽到的對象。

        }

    }

}

案例二:

觀察者模式類比監聽

package cn.hx.demo;

public class TestObersver {

    public static void main(String[] args) {

        Person person = new Person();//聲明被觀察者

        System.err.println("pp:"+person);

        person.addPersonListener(new PersonListener() {

            public void running(PersonEvent pe) {

                System.err.println("你正在跑....."+pe.getSource());

                throw new RuntimeException("他跑了。。。");

            }

        });

        person.run();

    }

}

class Person{

    private PersonListener pl;

    public void addPersonListener(PersonListener pl){

        this.pl = pl;

    }

    public void run(){

        if(pl!=null){

            pl.running(new PersonEvent(this));

        }

        System.err.println("我正在跑步......");

    }

}

interface PersonListener{

    void running(PersonEvent pe);

}

class PersonEvent{

    private Object src;

    public PersonEvent(Object obj) {

        this.src=obj;

    }

    public Object getSource(){

        return src;

    }

}

 與上面的案例一進行對比,體會監聽器做了什麼。

 

 

java—監聽器 (55)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.