4

JFrame のsetDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)メソッドを使用しています。

ネイティブのルック アンド フィールをサポートしたいので、Swing の代わりに AWT を使用する必要があります。では、setDefaultCloseOperation に相当する AWT メソッドは何でしょうか?

ネイティブのルック アンド フィールをサポートするには、Swing の代わりに AWT を使用する必要があるという考えは正しいですか?

4

3 に答える 3

6

AWT には 1 つのメソッドに相当するものはありませんが、自分で構築できます。

myFrame.addWindowListener(
  new WindowAdapter(){
    public void windowClosed(WindowEvent e) { System.exit(0); }
  }
);

AWT を使用しなくても、ネイティブの忠実度に近づけることができます。代わりに、UIManager を使用してデフォルトのルック アンド フィールを設定します。

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeel());

UI を表示する前にこれを行う必要があります。

于 2009-08-06T05:01:51.767 に答える
1

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);
    }
});
于 2014-10-19T11:22:45.647 に答える