歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Java添加事件的四種方式

Java添加事件的幾種方式(轉載了codebrother的文章,做了稍微的改動)

/**
 * Java事件監聽處理——自身類實現ActionListener接口,作為事件監聽器
 *
 * @author codebrother
 */
class EventListener1 extends JFrame implements ActionListener {
    private JButton btBlue, btDialog;

    public EventListener1() {
        setTitle("Java GUI 事件監聽處理");
        setBounds(100, 100, 500, 350);
        setLayout(new FlowLayout());
        btBlue = new JButton("藍色");     
        btDialog = new JButton("彈窗");
       
        // 將按鈕添加事件監聽器
        btBlue.addActionListener(this);
        btDialog.addActionListener(this);

        add(btBlue);
        add(btDialog);

        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    // ***************************事件處理***************************
    @Override
    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == btBlue) {
            Container c = getContentPane();
            c.setBackground(Color.BLUE);
        }
        else if (e.getSource() == btDialog) {
            JDialog dialog = new JDialog();
            dialog.setBounds(300, 200, 400, 300);
            dialog.setVisible(true);
        }
    }

}

/**
 * Java事件監聽處理——內部類處理
 *
 * @author codebrother
 */

class EventListener3 extends JFrame {
    private JButton btBlue, btDialog;

    // 構造方法
    public EventListener3() {
        setTitle("Java GUI 事件監聽處理");
        setBounds(100, 100, 500, 350);
        setLayout(new FlowLayout());
        btBlue = new JButton("藍色");
        btDialog = new JButton("彈窗");
        // 添加事件監聽器對象(面向對象思想)
        btBlue.addActionListener(new ColorEventListener());
        btDialog.addActionListener(new DialogEventListener());

        add(btBlue);
        add(btDialog);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    // 內部類ColorEventListener,實現ActionListener接口
    class ColorEventListener implements ActionListener {
        @Override
        public void actionPerformed(ActionEvent e) {
            Container c = getContentPane();
            c.setBackground(Color.BLUE);
        }
    }
    // 內部類DialogEventListener,實現ActionListener接口
    class DialogEventListener implements ActionListener {
        @Override
        public void actionPerformed(ActionEvent e) {
            JDialog dialog = new JDialog();
            dialog.setBounds(300, 200, 400, 300);
            dialog.setVisible(true);
        }
    }

}

 

/**
 * Java事件監聽處理——匿名內部類處理
 *
 * @author codebrother
 */
class EventListener2 extends JFrame {
    private JButton btBlue, btDialog;

    public EventListener2() {
        setTitle("Java GUI 事件監聽處理");
        setBounds(100, 100, 500, 350);
        setLayout(new FlowLayout());

        btBlue = new JButton("藍色");
        btDialog = new JButton("彈窗");
       
        // 添加事件監聽器(此處即為匿名類)
        btBlue.addActionListener(new ActionListener() {
            // 事件處理
            @Override
            public void actionPerformed(ActionEvent e) {
                Container c = getContentPane();
                c.setBackground(Color.BLUE);
            }
        });
       
        // 並添加事件監聽器 
        btDialog.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                JDialog dialog = new JDialog();
                dialog.setBounds(300, 200, 400, 300);
                dialog.setVisible(true);
            }
        });

        add(btBlue);
        add(btDialog);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

}

/**
 * Java事件監聽處理——外部類處理
 *
 * @author codebrother
 */
class EventListener4 extends JFrame {
    private JButton btBlue, btDialog;

    public EventListener4() {
        setTitle("Java GUI 事件監聽處理");
        setBounds(100, 100, 500, 350);
        setLayout(new FlowLayout());
        btBlue = new JButton("藍色");
        btDialog = new JButton("彈窗");
        // 將按鈕添加事件監聽器
        btBlue.addActionListener(new ColorEventListener(this));
        btDialog.addActionListener(new DialogEventListener());

        add(btBlue);
        add(btDialog);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

}
// 外部類ColorEventListener,實現ActionListener接口
class ColorEventListener implements ActionListener {
    private EventListener4 el;
    ColorEventListener(EventListener4 el) {
        this.el = el;
    }
    @Override
    public void actionPerformed(ActionEvent e) {
        Container c = el.getContentPane();
        c.setBackground(Color.BLUE);
    }
}
// 外部類DialogEventListener,實現ActionListener接口
class DialogEventListener implements ActionListener {
    @Override
    public void actionPerformed(ActionEvent e) {
        JDialog dialog = new JDialog();
        dialog.setBounds(300, 200, 400, 300);
        dialog.setVisible(true);
    }
}

public class ActionListenerTest
{
    public static void main(String args[])
    {
        new EventListener2();
    }
}

Java 9 的新特性發布 http://www.linuxidc.com/Linux/2014-08/105707.htm

Java編程思想(第4版) 中文清晰PDF完整版 http://www.linuxidc.com/Linux/2014-08/105403.htm

編寫高質量代碼 改善Java程序的151個建議 PDF高清完整版 http://www.linuxidc.com/Linux/2014-06/103388.htm

Java 8簡明教程 http://www.linuxidc.com/Linux/2014-03/98754.htm

Java對象初始化順序的簡單驗證 http://www.linuxidc.com/Linux/2014-02/96220.htm

Java對象值傳遞和對象傳遞的總結 http://www.linuxidc.com/Linux/2012-12/76692.htm

Copyright © Linux教程網 All Rights Reserved