Java图形界面事件监听处理

                              Java图形界面事件监听处理

文章开始把我喜欢的这句话送个大家:这个世界上还有什么比自己写的代码运行在一亿人的电脑上更酷的事情吗,如果有那就是让这个数字再扩大十倍。

共四种方法:

1.自身类实现ActionListener接口,作为事件监听器(适合初学者,事件多时效率低)

2。通过匿名类处理

3.通过内部类处理(更符合面向对象的思想)

4.通过外部类处理(如果有多个重复的监听事件比较适合)

下面一一介绍

1.自身类实现ActionListener接口

 import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
public class EventListener1 extends JFrame implements ActionListener {
    private JButton btBlue, btDialog;
    /**
     * Java事件监听处理——自身类实现ActionListener接口,作为事件监听器
     *
     * @author beyond
     */
    // 构造方法
    public EventListener1() {
        // 设置标题栏内容
        setTitle("Java GUI 事件监听处理");
        // 设置初始化窗口位置
        setBounds(100, 100, 500, 350);
        // 设置窗口布局
        setLayout(new FlowLayout());
        // 创建按钮对象
        btBlue = new JButton("蓝色");
        // 将按钮添加事件监听器
        btBlue.addActionListener(this);
        // 创建按钮对象
        btDialog = new JButton("弹窗");
        // 将按钮添加事件监听器
        btDialog.addActionListener(this);
        // 把按钮容器添加到JFrame容器上
        add(btBlue);
        add(btDialog);
        // 设置窗口可视化
        setVisible(true);
        // 设置窗口关闭
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    // ***************************事件处理***************************
    @Override
    public void actionPerformed(ActionEvent e) {
        // 判断最初发生Event事件的对象
        if (e.getSource() == btBlue) {
            // 获得容器
            Container c = getContentPane();
            // 设置容器背景颜色
            c.setColor.BLUE);
         }
        else if (e.getSource() == btDialog) {
            // 创建JDialog窗口对象
            JDialog dialog = new JDialog();
            dialog.setBounds(300, 200, 400, 300);
            dialog.setVisible(true);
        }
    }
    // ***************************主方法***************************
    public static void main(String[] args) {
        new EventListener1();
    }
}

2.匿名类处理

import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
public class EventListener2 extends JFrame {
    private JButton btBlue, btDialog;
    /**
     * Java事件监听处理——匿名类处理
     *
     * @author beyond
     */
    // 构造方法
    public EventListener2() {
        // 设置标题栏内容
        setTitle("Java GUI 事件监听处理");
        // 设置初始化窗口位置
        setBounds(100, 100, 500, 350);
        // 设置窗口布局
        setLayout(new FlowLayout());
        // 创建按钮对象
        btBlue = new JButton("蓝色");
        // 添加事件监听器(此处即为匿名类)
        btBlue.addActionListener(new ActionListener() {
            // 事件处理
            @Override
            public void actionPerformed(ActionEvent e) {
                // 获得容器,设置容器背景颜色
                Container c = getContentPane();
                c.setColor.BLUE);
             }
        });
        // 创建按钮对象,并添加事件监听器
        btDialog = new JButton("弹窗");
        btDialog.addActionListener(new ActionListener() {
            // 事件处理
            @Override
            public void actionPerformed(ActionEvent e) {
                // 创建JDialog窗口对象
                JDialog dialog = new JDialog();
                dialog.setBounds(300, 200, 400, 300);
                dialog.setVisible(true);
            }
        });
        // 把按钮容器添加到JFrame容器上
        add(btBlue);
        add(btDialog);
        // 设置窗口可视化
        setVisible(true);
        // 设置窗口关闭
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    // ***************************主方法***************************
    public static void main(String[] args) {
        new EventListener2();
    }

}

3.内部类处理

import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
public class EventListener3 extends JFrame {
    private JButton btBlue, btDialog;
    /**
     * Java事件监听处理——内部类处理
     *
     * @author beyond
     */
    // 构造方法
    public EventListener3() {
        // 设置标题栏内容
        setTitle("Java GUI 事件监听处理");
        // 设置初始化窗口位置
        setBounds(100, 100, 500, 350);
        // 设置窗口布局
        setLayout(new FlowLayout());
        // 创建按钮对象
        btBlue = new JButton("蓝色");
        // 添加事件监听器对象(面向对象思想)
        btBlue.addActionListener(new ColorEventListener());
        btDialog = new JButton("弹窗");
        btDialog.addActionListener(new DialogEventListener());
        // 把按钮容器添加到JFrame容器上
        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.setColor.BLUE);
         }
    }
    // 内部类DialogEventListener,实现ActionListener接口
    class DialogEventListener implements ActionListener {
        @Override
        public void actionPerformed(ActionEvent e) {
            // 创建JDialog窗口对象
            JDialog dialog = new JDialog();
            dialog.setBounds(300, 200, 400, 300);
            dialog.setVisible(true);
        }
    }
    // ***************************主方法***************************
    public static void main(String[] args) {
        new EventListener3();
    }

}

4.外部类处理

 import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
public class EventListener4 extends JFrame {
    private JButton btBlue, btDialog;
    /**
     * Java事件监听处理——外部类处理
     *
     * @author beyond
     */
    // 构造方法
    public EventListener4() {
        // 设置标题栏内容
        setTitle("Java GUI 事件监听处理");
        // 设置初始化窗口位置
        setBounds(100, 100, 500, 350);
        // 设置窗口布局
        setLayout(new FlowLayout());
        // 创建按钮对象
        btBlue = new JButton("蓝色");
        // 将按钮添加事件监听器
        btBlue.addActionListener(new ColorEventListener(this));
        // 创建按钮对象
        btDialog = new JButton("弹窗");
        // 将按钮添加事件监听器
        btDialog.addActionListener(new DialogEventListener());
        // 把按钮容器添加到JFrame容器上
        add(btBlue);
        add(btDialog);
        // 设置窗口可视化
        setVisible(true);
        // 设置窗口关闭
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    // ***************************主方法***************************
    public static void main(String[] args) {
        new EventListener4();
    }
}
// 外部类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.setColor.BLUE);
     }
}
// 外部类DialogEventListener,实现ActionListener接口
class DialogEventListener implements ActionListener {
    @Override
    public void actionPerformed(ActionEvent e) {
        // 创建JDialog窗口对象
        JDialog dialog = new JDialog();
        dialog.setBounds(300, 200, 400, 300);
        dialog.setVisible(true);
    }
}

加油吧,程序员!

猜你喜欢

转载自blog.csdn.net/weixin_42248302/article/details/80613428