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