我无法关闭 JFrame

I cannot close JFrame

我有两个 java 表单:NewJFrame 和 NewJFrame1。我在 NewJFrame 上有按钮,所以当我单击该按钮以打开 NewJFrame1 并关闭 NewJFrame 时。它可以打开 NewJFrame1,但不能关闭 NewJFrame。 这个: NewJFrame frame = new NewJframe(); frame.setVisible(假); 不起作用。另外,frame.dispose();不工作。有人能帮我解决问题吗,我怎样才能通过单击其中的按钮 (NewJFrame) 来关闭 NewJFrame。

在您尝试关闭它之前检查框架是否可见...也许您正在尝试关闭错误的框架实例...如果您有 NewJFrame frame = new NewJframe() 然后需要关闭相同的框架。

frame.setVisible(假); 要么 frame.dispose();

只对原始实例进行处理,不要JFrame frame = new JFrame()两次。

在你的代码中

NewJFrame frame = new NewJFrame();

创建 NewJFrame 的新(第二个)实例。如果你想关闭原来的,你需要这个实例的引用。根据您的代码,引用可能是 this,因此

this.dispose();

可以工作。

试试这个。希望它能奏效。

       frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

我不太确定你为什么要这样做,但我为你提供了一个工作示例:

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;


public class Tester implements ActionListener {
    private static final String SHOW = "show";
    private final JButton displayer = new JButton(SHOW);
    private final JButton hider = new JButton("hide");
    private final JFrame f;
    private final JFrame f1;

    Tester(){
        displayer.addActionListener(this);
        hider.addActionListener(this);

        f = new JFrame();
        f.setLayout(new FlowLayout());
        f.setSize(500, 500);
        f.add(displayer);
        f.add(hider);
        f.setVisible(true);

        f1 = new JFrame();
        f1.setSize(500, 500);
        f1.setLocationRelativeTo(null);
        f1.add(new JLabel("empty frame"));  
    }

    public static void main(String[] args) {
        new Tester();
    }

    @Override
    public void actionPerformed(ActionEvent arg0) {
            f1.setVisible(arg0.getActionCommand().equals(SHOW));
    }
}