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