3

私はJavaプログラムを持っています。プログラムを実行すると、アタッチした GUI が表示されます。

閉じようとすると、確認ダイアログが表示されます。はいボタンを押すと、 を使用してプログラムを終了しSystem.exit()ます。

public static void main(String args[])
{
    ButtonTest app = new ButtonTest( );
    app.addWindowListener( 
        new WindowAdapter( )
        {
            public void windowClosing (WindowEvent e)
            {
                String message = " Really Quit ? ";
                String title = "Quit";
                int reply = JOptionPane.showConfirmDialog(null, message, title, JOptionPane.YES_NO_OPTION);
                if (reply == JOptionPane.YES_OPTION)
                {
                    System.exit(0);
                }

            }
        }
    );
}

プログラムを終了したくない場合、どうすればよいですか? System.continued()?

4

5 に答える 5

3

この場合、else は必要ありません

于 2012-05-23T09:14:43.767 に答える
3

これを設定してみて、

app.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE)

【編集済】

したがって、コードは次のようになります。

public static void main(String args[]) {
    ButtonTest app = new ButtonTest();
    app.addWindowListener(new WindowAdapter() {
        public void windowClosing(WindowEvent e) {
            int reply = JOptionPane.showConfirmDialog(null,
                    "Really Quit ?", "Quit", JOptionPane.YES_NO_OPTION);
            if (reply == JOptionPane.YES_OPTION)
                System.exit(0);
        }
    });
    app.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
    app.setSize(640, 480);
    app.setVisible(true);
}

[説明]

どうしてこうなったと思うかもしれません。のウィンドウを閉じるボタンの動作はJFrame、 とは異なりFrame、ウィンドウを非表示にすることです。したがって、とにかくウィンドウを隠したり閉じたりします。ただし、ユーザーがyes. 次に、ウィンドウを閉じるだけでなく、プログラムも終了します。ユーザーが をクリックするnoと、とにかくウィンドウを閉じるだけです。したがって、それを明示的に伝える必要がありますDO_NOTHING_ON_CLOSE

[ドキュメント]

Frame とは異なり、JFrame には、ユーザーがウィンドウを閉じようとしたときにどのように応答するかについての概念があります。デフォルトの動作では、ユーザーがウィンドウを閉じると JFrame が非表示になります。デフォルトの動作を変更するには、メソッド setDefaultCloseOperation(int) を呼び出します。JFrame を Frame インスタンスと同じように動作させるには、setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE) を使用します。

参照: JFrame ドキュメント

于 2012-05-23T09:15:18.683 に答える
1

あなたが私に尋ねるなら、私はYES SELECTION、でアプリケーションを突然閉じる代わりに、で行きます、私はアプリケーションをSystem.exit(0)閉じる優雅な方法を選択しframeObject.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)ます。以下は、参考になるサンプル プログラムの 1 つです。NO SELECTIONframeObject.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE)

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class ApplicationCloseExample
{   
    private void displayGUI()
    {
        final JFrame frame = new JFrame("Application Close Example");

        frame.addWindowListener(new WindowAdapter()
        {
            public void windowClosing(WindowEvent we)
            {
                int result = JOptionPane.showConfirmDialog(
                                frame, "Do you want to Exit ?"
                                , "Exit Confirmation : ", JOptionPane.YES_NO_OPTION);
                if (result == JOptionPane.YES_OPTION)               
                    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                else if (result == JOptionPane.NO_OPTION)   
                    frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
            }
        });

        frame.setSize(300, 300);
        frame.setVisible(true);
    }

    public static void main(String... args)
    {
        SwingUtilities.invokeLater(new Runnable()
        {
            public void run()
            {
                new ApplicationCloseExample().displayGUI();
            }
        });
    }
}
于 2012-05-23T13:20:26.940 に答える