WindowListenerはすべてのメソッドinterface
を強制しますが、 WindowAdapterは実装であり、処理する必要があるメソッドのみが必要です。override
WindowListener
override
WindowListener
はインスタンス化できないことを意味するインターフェイスでありWindowListener
、は演算子をWindowAdapter
使用してインスタンス化できる具象クラスです。new
を使用するWindowAdapter
と、クラスが必要なメソッドのみをオーバーライドするため、コードがよりクリーンになります。例えば:
ウィンドウリスナー
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 が 2 つ存在します。
編集:
WindowListener
isであるためinterface
、JFrame サブクラスで実装できます。
public class MainWindow extends JFrame implements WindowListener {
// this is ok
}
public class MainWindow extends JFrame, WindowAdapter {
// this is not allow
}
しかし、あなたはそれを行うことはできませんWindowAdapter
。