WindowListener是强制您覆盖所有方法的接口,而
WindowAdapter是WindowListener的实现,您只需要覆盖您感兴趣的方法即可。
WindowListener是一种接口,意味着您无法实例化WindowListener,而WindowAdapter是具体的类,可以使用新的运算符进行实例化。
当您使用WindowAdapter时,代码更干净,您的类只会覆盖所需的方法。
例如:
的WindowListener
public class CloseListener implements WindowListener {
// im not interest on this event, but still need to override it
@Override
public void windowOpened(WindowEvent e) {
}
// im not interest on this event, but still need to override it
@Override
public void windowClosing(WindowEvent e) {
}
@Override
public void windowClosed(WindowEvent e) {
System.exit(0);
}
// im not interest on this event, but still need to override it
@Override
public void windowIconified(WindowEvent e) {
}
// im not interest on this event, but still need to override it
@Override
public void windowDeiconified(WindowEvent e) {
}
}
WindowAdapter的
使用适配器代码更干净:
// at JFrame class
addWindowListener(new CloseListener());
// reusable Close Listener
public class CloseListener extends WindowAdapter {
@Override
public void windowClosed(WindowEvent e) {
System.exit(0);
}
}
要么
addWindowListener(new WindowAdapter() {
@Override
public void windowClosed(WindowEvent e) {
System.exit(0);
}
});
所以我建议使用WindowAdapter,但不一定要遵循。但是,与WindowAdapter存在相同的两个API就像创建侦听器对象一样方便。
编辑:
由于WindowListener是接口,您可以在JFrame子类中实现它。
public class MainWindow extends JFrame implements WindowListener {
// this is ok
}
public class MainWindow extends JFrame, WindowAdapter {
// this is not allow
}
但是您无法使用WindowAdapter。