2009-02-21 8 views
7

私はユーザに尋ねる小さなフレームを持っています&パスワード。このフレームは、メインウィンドウのボタンをクリックすると開きます。javaスイング閉じるウィンドウなしのアプリケーションなし

次に、私はokとキャンセルの2つのボタンがあります。

「キャンセル」ボタンをクリックすると、アプリケーションを終了せずにこのフレームを閉じる必要があります。

どうすればいいですか?

答えて

18

Frame.hide()またはFrame.dispose()のいずれかを使用できます。 また、JDialogまたはJOptionPaneを調べることをお勧めします。

修正:hide()は推奨されていません。代わりにSetVisible(false)を使用する必要があります。

+0

ok、クリックハンドラがフレームとは別のクラスにある場合はどうなりますか? – Giancarlo

+0

(コンストラクタ内の)クリックハンドラへのフレームへの参照を渡す必要があります – TofuBeer

2

は、あなたがいないことを確認してください:

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
+0

これは私の問題のバディではありません:) – Giancarlo

1

をあなたはJFrameを実装している外部クラス内の関数を作成します(あなたがボタンを押すと、キャンセルに閉じる必要があります)。
その機能の実装にthis.setVisible(false);を書きます。
最後に、ActionListenerの実装でこの関数を呼び出します。

setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
3

たぶんきれいな方法は、ちょうどDISPOSE_ON_CLOSEにEXIT_ON_CLOSEからsetDefaultCloseOperationを変更です。例えば:

public void actionPerformed(ActionEvent ae) { 

    if(ae.getSource()=="button you press to confirm username/password"){ 
     if(userNameTf.getText().equals(username)&&isPassword(passwordTf.getPassword())){ 
      new "window to be opened upon success" 
      this.dispose(); // calls dispose on this object ie. 
              // the login window 
     } 
     else{ 
      userNameTf.setText(""); 
      passwordTf.setText(""); 

      JOptionPane.showMessageDialog(this, 
        "Username and/or password is incorrect!", 
        "Attention!", 
        JOptionPane.WARNING_MESSAGE); 
     } 
    } 

} 

あなたはSuper_Class_Name.this.disposeと ')(this.disposeただ置き換える イベントを処理するために内部クラスを使用している場合は();

3

を使用this.dispose();アクションリスナーメソッドでは、ユーザー名/パスワードが成功したとき:

1

あなたは多くの方法でそれを行うことができますが、これらの二つの方法は、内部に1
1.書き込みthis.setVisible(false)ActionListener
それともthis.dispose()は内部ActionListenerを実装
2.書き込みを実現し、最も利用可能です。 これがあなたを助けてくれることを願っています。

+0

これは受け入れられた答えが言うものです。既に受け入れられていることを繰り返すだけの理由はありません。 –

2

setVisibleメソッドはメモリリソースを解放しないため、フォームを再度使用する場合にのみ使用してください。

disposeメソッドこのWindow、そのサブコンポーネント、および所有するすべての子によって使用されるすべてのネイティブスクリーンリソースを解放します。つまり、これらのコンポーネントのリソースは破棄され、消費するメモリはすべてOSに返され、表示不可能とマークされます。

関連する問題