我无法关闭 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));
}
}
我有两个 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));
}
}