什么是"适配器",可以用简单的代码做演示看的出来,适配器是事件监听接口实现类,这些类实现了相应的事件监听器接口,并为接口中所有方法定义了空实现方法,就是声明了接口中定义的所有方法,但是方法是空体的。按键事件监听器的适配器为KeyAdapter。如果我们想在软件软件中添加键盘监听器,而我们只需要实现其中的一个方法,鼠标按下时执行,那么其它的方法就不必要写出,不需要实现KeyListener类,只需要实现其适配器KeyAdapter类,代码简洁,且容易阅读。
通过以下代码对比,我们不仅能学习到什么是适配器,和创建窗体事件的监听器。
[CODE=java]
import javax.swing.*;
import java.awt.event.*;
public class MyWindow extends JFrame {
public MyWindow() {
addWindowListener(new WindowListener() {
public void windowActivated(WindowEvent arg0) {
System.out.println("窗口在活动状态");
}
@Override
public void windowClosed(WindowEvent arg0) {
System.out.println("窗口已经关闭");
}
@Override
public void windowClosing(WindowEvent arg0) {
System.out.println("窗口正在关闭");
}
@Override
public void windowDeactivated(WindowEvent arg0) {
System.out.println("窗口非活动状态");
}
@Override
public void windowDeiconified(WindowEvent arg0) {
System.out.println("窗口脱离最小化");
}
@Override
public void windowIconified(WindowEvent arg0) {
System.out.println("窗口最小化");
}
@Override
public void windowOpened(WindowEvent arg0) {
System.out.println("窗口打开状态");
}
});
setBounds(100, 100, 300, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
MyWindow test = new MyWindow();
test.setVisible(true);
}
}
[/CODE]
执行结果:
窗口在活动状态
窗口打开状态
窗口最小化
窗口非活动状态
窗口脱离最小化
窗口在活动状态
窗口正在关闭
以上代码,如果我只需要当界面最小化的时候,在控制台输出"程序已经最小化",那么我们仍然需要写出其它多余的方法吗?是没有必要的,多余代码只能让程序更累赘,这就用到了适配器,通过实现WindoListener()的适配器接口WindoAdapter()来单独写windowIconified()方法实现对"最小化"的监听。
看以下代码:
[CODE=Java]
import javax.swing.*;
import java.awt.event.*;
public class MyWindow extends JFrame {
public MyWindow() {
addWindowListener(new WindowAdapter() {
public void windowIconified(WindowEvent arg0) {
System.out.println("窗口最小化");
}
});
setBounds(100, 100, 300, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
MyWindow test = new MyWindow();
test.setVisible(true);
}
}
[/CODE]
执行结果:
出现界面,点击"最小化",控制台输出"窗口最小化"。 |