我无法关闭JFrame

时间:2015-06-18 06:47:32

标签: java swing dispose

我有两个java表单:NewJFrame i NewJFrame1。我在NewJFrame上有按钮,所以当我点击该按钮打开NewJFrame1并关闭NewJFrame时。它可以打开NewJFrame1,但无法关闭NewJFrame。 这个:     NewJFrame frame = new NewJframe();     frame.setVisible(假); 不起作用。另外,frame.dispose();不起作用。有人帮我解决问题,如何通过单击NewJFrame中的按钮关闭NewJFrame(NewJFrame)。

4 个答案:

答案 0 :(得分:1)

在你试图关闭它之前检查框架是否可见......也许你正在尝试关闭错误的框架实例...如果你有NewJFrame框架= new NewJframe() 那么这个相同的框架需要关闭。

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

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

答案 1 :(得分:1)

在您的代码中

NewJFrame frame = new NewJFrame();

创建NewJFrame的新(第二个)实例。如果要关闭原始实例,则需要引用此实例。根据您的代码,引用可能是this,所以

this.dispose();

可行。

答案 2 :(得分:0)

试试这个..希望,它会奏效。

       frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

答案 3 :(得分:0)

我真的不明白为什么要这样做,但我为你提供了一份工作样本:

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