36.Swing事件处理

接口 ActionListener 用于接收操作事件(点击按钮等)的侦听器接口。
类 JOptionPane 方法

public static void showMessageDialog(Component parentComponent,
                                     Object message)
                              throws HeadlessException调出标题为 "Message" 的信息消息对话框。
public void addActionListener(ActionListener l)将一个 ActionListener 添加到按钮中。 

参数:
l - 要添加的 ActionListener

/**
 * 建一个监听类
 */
class JButtonListener implements ActionListener{

    /**
     * 按下按钮后会执行的程序
     */
    public void actionPerformed(ActionEvent arg0) {
        // TODO 自动生成的方法存根
        JOptionPane.showMessageDialog(null, "我被点击了");

    }

}

public class EventTest1 {

    public static void main(String[] args) {
        JFrame jFrame = new JFrame("Swing事件测试");
        JButton jb = new JButton("按钮");

        JButtonListener jButtonListener = new JButtonListener();//new 一个JButtonListener对象,添加到按钮中
        jb.addActionListener(jButtonListener);//添加或者注册事件监听

        jFrame.add(jb);
        jFrame.setLocation(400, 100);//设置容器位置
        jFrame.setSize(300, 120);//设置容器大小
        jFrame.setVisible(true);//让容器显示
        jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

输出 这里写图片描述


接口 WindowListener 用于接收窗口事件(窗口打开、关闭、最小化等)的侦听器接口,方法如下图:
这里写图片描述

/**
 * 建一个监听类
 */
class MyWindowListener implements WindowListener{

    public void windowActivated(WindowEvent arg0) {
        // TODO 自动生成的方法存根

    }

    public void windowClosed(WindowEvent arg0) {
        // TODO 自动生成的方法存根

    }

    public void windowClosing(WindowEvent arg0) {
        // TODO 自动生成的方法存根

    }

    public void windowDeactivated(WindowEvent arg0) {
        // TODO 自动生成的方法存根

    }

    public void windowDeiconified(WindowEvent arg0) {
        // TODO 自动生成的方法存根

    }

    public void windowIconified(WindowEvent arg0) {
        // TODO 自动生成的方法存根

    }

    public void windowOpened(WindowEvent arg0) {
        // TODO 自动生成的方法存根
        System.out.println("窗口被打开");
    }   
}

public class EventTest2 {

    public static void main(String[] args) {
        JFrame jFrame = new JFrame("Swing事件测试");
        JButton jb = new JButton("按钮");

        MyWindowListener myWindowListener = new MyWindowListener();//new 一个MyWindowListener对象,添加到窗口中
        jFrame.addWindowListener(myWindowListener);//添加或者注册事件监听

        jFrame.add(jb);
        jFrame.setLocation(400, 100);//设置容器位置
        jFrame.setSize(300, 120);//设置容器大小
        jFrame.setVisible(true);//让容器显示
        jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

输出 这里写图片描述


另一种方法:不用单独建一个监听类,使用匿名类

jFrame.addWindowListener(new WindowListener(){
//此处为动作调用的方法函数
});//使用匿名类
public class EventTest2 {

    public static void main(String[] args) {
        JFrame jFrame = new JFrame("Swing事件测试");
        JButton jb = new JButton("按钮");

    //  MyWindowListener myWindowListener = new MyWindowListener();//new 一个MyWindowListener对象,添加到窗口中
        jFrame.addWindowListener(new WindowListener() {

            public void windowOpened(WindowEvent arg0) {
                // TODO 自动生成的方法存根
                System.out.println("窗口被打开");
            }

            public void windowIconified(WindowEvent arg0) {
                // TODO 自动生成的方法存根

            }

            public void windowDeiconified(WindowEvent arg0) {
                // TODO 自动生成的方法存根

            }

            public void windowDeactivated(WindowEvent arg0) {
                // TODO 自动生成的方法存根

            }

            public void windowClosing(WindowEvent arg0) {
                // TODO 自动生成的方法存根

            }

            public void windowClosed(WindowEvent arg0) {
                // TODO 自动生成的方法存根

            }

            public void windowActivated(WindowEvent arg0) {
                // TODO 自动生成的方法存根

            }
        });//添加或者注册事件监听

        jFrame.add(jb);
        jFrame.setLocation(400, 100);//设置容器位置
        jFrame.setSize(300, 120);//设置容器大小
        jFrame.setVisible(true);//让容器显示
        jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

类 WindowAdapter 接收窗口事件的抽象适配器类。此类中的方法为空。此类存在的目的是方便创建侦听器对象。

class MyWindowAdapter extends WindowAdapter{    //继承适配器类

    //Alt+S选实现方法
    @Override
    public void windowClosing(WindowEvent arg0) {
        // TODO 自动生成的方法存根
        super.windowClosing(arg0);
        System.out.println("窗口关闭");
    }           
}

public class EventTest3 {
    public static void main(String[] args) {
        JFrame jFrame = new JFrame("Swing事件测试");

        MyWindowAdapter myWindowAdapter = new MyWindowAdapter();
        jFrame.addWindowListener(myWindowAdapter);
        jFrame.setLocation(400, 100);//设置容器位置
        jFrame.setSize(300, 120);//设置容器大小
        jFrame.setVisible(true);//让容器显示
        jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

输出
这里写图片描述

使用匿名类的方法 不去要建监听类继承适配器class MyWindowAdapter extends WindowAdapter

public class EventTest3 {
    public static void main(String[] args) {
        JFrame jFrame = new JFrame("Swing事件测试");

        //MyWindowAdapter myWindowAdapter = new MyWindowAdapter();
        //jFrame.addWindowListener(myWindowAdapter);
        jFrame.addWindowListener(new WindowAdapter() {

            //public void windowClosing使用Alt+S调出
            @Override
            public void windowClosing(WindowEvent arg0) {
                // TODO 自动生成的方法存根
                super.windowClosing(arg0);
                System.out.println("窗口关闭");
            }

        });
        jFrame.setLocation(400, 100);//设置容器位置
        jFrame.setSize(300, 120);//设置容器大小
        jFrame.setVisible(true);//让容器显示
        jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值