Java 退出Jframe窗口时出错

Java 退出Jframe窗口时出错,java,swing,jframe,Java,Swing,Jframe,我有一个Jframe类的窗口,它包含一个按钮。单击该按钮,将打开Jframe类的第二个窗口。单击第二个窗口的关闭或退出按钮后,第一个窗口也将与第二个窗口一起关闭。 为什么会这样 下面是我的代码: //这是我的第一份文件 class Frame1 extends JFrame { Frame1() { super("hello this is window 1"); setVisible(true); setSize(400,400);

我有一个Jframe类的窗口,它包含一个按钮。单击该按钮,将打开Jframe类的第二个窗口。单击第二个窗口的关闭或退出按钮后,第一个窗口也将与第二个窗口一起关闭。 为什么会这样

下面是我的代码: //这是我的第一份文件

class Frame1 extends JFrame
{
Frame1()
{
        super("hello this is window 1");
        setVisible(true);
        setSize(400,400);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new FlowLayout());
        JButton btn = new JButton("open second window");
       btn.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent e) {
                System.out.println("button clicked");
                Frame2 obj2 = new Frame2();
        }
    });
    add(btn);
}

public static void main(String args[])
{
        Frame1 obj = new Frame1();
}
}

// this is my second file
class Frame2 extends JFrame
{
Frame2()
{
        super("hello this is window 2");
        setVisible(true);
        setSize(400,400);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new FlowLayout());
}
}

尝试更改退出程序的默认关闭事件,然后显式关闭该JFrame

frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
frame.dispatchEvent(new WindowEvent(frame, WindowEvent.WINDOW_CLOSING));
一些可能有帮助的链接:


尝试更改退出程序的默认关闭事件,然后显式关闭该JFrame

frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
frame.dispatchEvent(new WindowEvent(frame, WindowEvent.WINDOW_CLOSING));
一些可能有帮助的链接:


将setDefaultCloseOperation参数的值更改为JFrame.DO\u NOTHING\u ON\u CLOSE可防止第二帧关闭第一帧

将setDefaultCloseOperation参数的值更改为JFrame.DO\u NOTHING\u ON\u CLOSE可防止第二帧关闭第一帧

尝试在第二帧,然后处理它,类似于:

frame2.addWindowListener(new java.awt.event.WindowAdapter() {
    @Override
    public void windowClosing(java.awt.event.WindowEvent windowEvent) {
        frame2.dispose();
    }
});

OR

frame2.setDefaultCloseOperation (JFrame.DISPOSE_ON_CLOSE);

但请注意,在您的应用程序中使用多个JFrame不是一个好做法,请使用一个JFrame和多个对话框。

尝试在第二个框架中添加窗口侦听器,然后将其丢弃,例如:

frame2.addWindowListener(new java.awt.event.WindowAdapter() {
    @Override
    public void windowClosing(java.awt.event.WindowEvent windowEvent) {
        frame2.dispose();
    }
});

OR

frame2.setDefaultCloseOperation (JFrame.DISPOSE_ON_CLOSE);

但请注意,在您的应用程序中使用多个JFrame不是一个好做法,请使用一个JFrame和多个对话框。

从Frame2类中删除这一行

然后将其添加到同一行:

setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

从Frame2类中删除此行

然后将其添加到同一行:

setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

你的密码在哪里?告诉我们,问题是什么,错误是什么?当我点击一个窗口的退出按钮时,第二个窗口也会退出一个窗口。我没有退出的代码。这是自动完成的。我不知道发生这种情况的原因是什么?@SarthakShah:没有看到产生问题的代码,很难尝试确定问题是什么。请把有问题的代码贴出来。你的代码在哪里?告诉我们,问题是什么,错误是什么?当我点击一个窗口的退出按钮时,第二个窗口也会退出一个窗口。我没有退出的代码。这是自动完成的。我不知道发生这种情况的原因是什么?@SarthakShah:没有看到产生问题的代码,很难尝试确定问题是什么。请把有问题的代码贴出来。