2009-08-06 11 views
3

私たちは、JFrameのsetDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)メソッドを使用しています。JFrame.setDefaultCloseOperationに相当するAWTは何ですか?

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

私は、ネイティブのルックアンドフィールをサポートするために、Swingの代わりにAWTを使用するべきだと考えていますか?

+0

スイング間違いなくネイティブな外観をサポートしており、ChessPly76 @ – ChssPly76

+0

を感じる:しかし、私たちはただ外観を作成し、すべてのプラットフォームのために固定することができた感じだと思います! – Johanna

+0

"固定"とは "すべてのプラットフォームで同じ"を意味する場合、スイングで行うことができます。l&fは "メタル"と呼ばれます。 「各プラットフォームのネイティブ」を意味する場合は、同様に行うことができます。私は私の答えにデモがあるSunのチュートリアルにリンクしています。 – ChssPly76

答えて

6

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

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

AWTを使用せずにネイティブの忠実度に近づくことができます。代わりに、UIManagerを使用してデフォルトのLook &を設定します。

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeel()); 

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

0

コードにL'n'Fを設定する代わりに、java/javawパラメータ-Dswing.defaultlafを使用できます。例えば

、Windowsのいずれかの下 が-Dswing.defaultlaf = com.sun.java.swing.plaf.windows.WindowsLookAndFeel

詳しい情報はhereを見つけることができる指定できます。

1

Javaは ウィンドウリスナーが

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) 
ネーミング7つの方法 をオーバーライド我々は、ちょうどスイングに長いコードから脱出するsetDefaultCloseOperation()メソッドを使用してウィンドウリスナー ネーミングウィンドウイベントを処理するAWTならびにスイングにインターフェースを提供します私たちは、それが

またワットを閉じるウィンドウを扱うとして最後の方法で私たちの終了コードを配置する必要があり

{}

eはアダプタクラスを使用できます。 アダプタクラスを使用すると、リスナよりも有利です。これにより、必要な抽象メソッドを1つまたは2つだけオーバーライドでき、リスナのすべての抽象メソッドをオーバーライドすることができなくなります。しかし、アダプターの問題は抽象クラスとして設計されているため、クラスが既にフレームを拡張しているため(Javaは多重継承をサポートしていません)、クラスに拡張できません。あなたのプログラムのコード次の例で使用するために

Frame f = new Frame(); 
f.addWindowListener(new WindowListener() 
{ 
    public void windowClosing(WindowEvent we) 
    { 
     System.exit(0); 
    } 
}); 
+0

あなたはいくつかの文脈を追加し、これが問題を解決する理由を説明する必要があります –

+0

私はあなたを得ていませんでした...あなたは何を言おうとしていますか?:) – Priyank

+0

あなたは答えにもっと文脈を与えるべきだということ。解決策を提示するだけではありません。なぜ、それが問題を解決するのかについての情報を提供し、スニペットの使い方を説明してください。そうでなければ、人々が**あなたが何を言っているのかを理解できない大きなチャンスがあるでしょう。 –

関連する問題