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

类 JOptionPane

java swing 双击事件_System

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);
    }
}

输出

java swing 双击事件_Swing_02

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

java swing 双击事件_Swing_03

/**
 * 建一个监听类
 */
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);
    }
}

输出

java swing 双击事件_自动生成_04

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

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);
    }
}

输出

java swing 双击事件_System_05

使用匿名类的方法 不去要建监听类继承适配器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);
    }
}