JFrame のsetDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)メソッドを使用しています。
ネイティブのルック アンド フィールをサポートしたいので、Swing の代わりに AWT を使用する必要があります。では、setDefaultCloseOperation に相当する AWT メソッドは何でしょうか?
ネイティブのルック アンド フィールをサポートするには、Swing の代わりに AWT を使用する必要があるという考えは正しいですか?
AWT には 1 つのメソッドに相当するものはありませんが、自分で構築できます。
myFrame.addWindowListener(
new WindowAdapter(){
public void windowClosed(WindowEvent e) { System.exit(0); }
}
);
AWT を使用しなくても、ネイティブの忠実度に近づけることができます。代わりに、UIManager を使用してデフォルトのルック アンド フィールを設定します。
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeel());
UI を表示する前にこれを行う必要があります。
Java は、window イベントを処理するために、swing と同様に awt にもインターフェースを提供します。
public void windowOpened(WindowEvent e) { }
public void windowClosed(WindowEvent e) { }
public void windowActivated(WindowEvent e) { }
public void windowDeactivated(WindowEvent e) { }
public void windowIconified(WindowEvent e) { }
public void windowDeiconified(WindowEvent e) { }
public void windowClosing(WindowEvent e)
{ }
ウィンドウのクローズを処理するため、最後のメソッドに終了コードを配置する必要があります
別の方法として、アダプター クラスを使用することもできます。アダプター クラスの使用は、リスナーのすべての抽象メソッドを強制的にではなく、必要な 1 つまたは 2 つの抽象メソッドのみをオーバーライドできるリスナーよりも有利です。しかし、アダプターの問題は、それらが抽象クラスとして設計されているため、クラスがすでにフレームを拡張しているため、クラスを拡張できないことです (Java は多重継承をサポートしていません)。
たとえば、プログラムで次のコードを使用します
Frame f = new Frame();
f.addWindowListener(new WindowListener ()
{
public void windowClosing(WindowEvent we)
{
System.exit(0);
}
});