8

ユーザーとパスワードを尋ねる小さなフレームがあります。このフレームは、メイン ウィンドウのボタンをクリックして開きます。

次に、[OK] と [キャンセル] の 2 つのボタンがあります。

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

どうやってやるの?

4

8 に答える 8

20

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

訂正: hide() は非推奨です。代わりに SetVisible(false) を使用する必要があります

于 2009-02-21T16:31:26.453 に答える
4

おそらく、よりクリーンな方法は、 setDefaultCloseOperation を EXIT_ON_CLOSE から DISPOSE_ON_CLOSE に変更することです。

setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
于 2011-09-07T07:13:52.097 に答える
3

フレームで setVisible(false) を呼び出すことができます。

HIDE_ON_CLOSE を渡すフレームで setDefaultCloseOperation を呼び出すこともできます (情報はこちら: http://java.sun.com/javase/6/docs/api/javax/swing/JFrame.html#setDefaultCloseOperation%28int%29 )。これにより、ユーザーが JFrame の「X」をクリックしてアプリを閉じても、アプリが消えるのを防ぐことができます。

于 2009-02-21T16:31:29.807 に答える
3

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

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);
        }
    }

}

内部クラスを使用してイベントを処理している場合は、'this.dispose()' を Super_Class_Name.this.dispose(); に置き換えてください。

于 2011-10-19T14:10:46.347 に答える
2

次のことをしないでください。

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
于 2009-02-21T16:35:27.363 に答える
2

setVisible メソッドはメモリ リソースを解放しないため、フォームを再度使用する場合にのみ使用する必要があります。

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

于 2013-01-10T12:13:46.360 に答える
1

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

于 2011-08-17T04:48:53.607 に答える
1

多くの方法でそれを行うことができますが、これらの 2つの方法が最も使いやすいもの
です。これがあなたを助けることを願っています。this.setVisible(false)ActionListener

this.dispose()ActionListener

于 2012-08-21T16:55:54.453 に答える