-1

GUIを閉じると、メインクラスでメソッドが実行されますが、その後も閉じられるようにしたいと思いますか?

助けてくださいありがとう

4

3 に答える 3

1

Java Swing を使用していると仮定します。

    JFrame frame = new JFrame();
    frame.setTitle("Project Planner");
    frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
    frame.addWindowListener(new WindowAdapter() {
        @Override
        public void windowClosing(WindowEvent event) {
            exitProcedure();
        }
    });

.

public void exitProcedure() {
    frame.dispose();
    System.exit(0);
}

dispose メソッドの前に、やりたいことを追加するだけです。

于 2013-03-13T17:08:04.250 に答える
0

このためWindowListenerには、関連する に登録する必要がありますJFrame。そして、windowClosing()メソッドをオーバーライドします。


String 配列からランダムに String を選択するための編集java.util.Random API を使用できます。たとえば、ここに の配列があり、が閉じられるStringたびに、この配列からランダムに選択され、メソッドに出力されます。JFrameStringcallMeBeforeExit

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;
import java.awt.event.WindowEvent;
import java.awt.event.WindowAdapter;
import java.awt.BorderLayout;
import java.util.Random;
class WorkBeforeClose extends  JFrame
{
    String[] strings = {
                            "Hello",
                            "World",
                            "Java",
                            "OOPs"
                        };
    public void showGUI()
    {
        setTitle("Close me");
        getContentPane().add(new JLabel("Close me"),BorderLayout.NORTH);
        addWindowListener(new WindowAdapter()
        {
            @Override
            public void windowClosing(WindowEvent evt)
            {
                callMeBeforeExit();
                System.exit(0);//Don't write this line if you don't want your program to exit
            }
        });
        setSize(200,200);
        setVisible(true);
    }
    private void callMeBeforeExit()
    {
        Random random = new Random();
        int i = random.nextInt(strings.length - 1);//Defines the Range of numbers to be chosen randomly.
        System.out.println(strings[i]);
    }
    public static void main(String st[])
    {
        SwingUtilities.invokeLater(new Runnable()
        {
            public void run()
            {
                WorkBeforeClose wbc = new WorkBeforeClose();
                wbc.showGUI();
            }
        });
    }
}
于 2013-03-13T17:17:05.303 に答える
0

WindowAdapterGUIのaddWindowListener()メソッドで実装してみてください。

于 2013-03-13T17:09:29.160 に答える