Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否将事件添加到操作侦听器而不删除默认操作?_Java - Fatal编程技术网

Java 是否将事件添加到操作侦听器而不删除默认操作?

Java 是否将事件添加到操作侦听器而不删除默认操作?,java,Java,我想这样做,当我关闭我的GUI时,它将在我的主类中运行一个方法,但之后也会关闭 如果您正在使用Java Swing,请提供帮助,谢谢: JFrame frame = new JFrame(); frame.setTitle("Project Planner"); frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); frame.addWindowListener(new WindowAdapter(

我想这样做,当我关闭我的GUI时,它将在我的主类中运行一个方法,但之后也会关闭


如果您正在使用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();
        }
    });


只需在dispose方法之前添加您想要执行的操作。

尝试在GUI的
addWindowListener()
方法中实现
WindowAdapter

为此,您需要将
WindowListener
注册到相关的
JFrame
。并重写
windowClosing()
方法

EDIT
要从字符串数组中随机选择字符串,可以使用API。例如,这里有一个
String
数组,每次关闭
JFrame
时,都会从该数组中随机选择一个
字符串,并在
callmebeforexit
方法中打印出来

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

另一个问题是,我希望随机选取一个字符串,然后将其放入system.out.println?我该怎么做,thanks@JoshuaBaron您将这些
字符串
存储在
字符串
数组
中?@JoshuaBaron:观看编辑后的答案。
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();
            }
        });
    }
}