当我在第一个窗口按一个按钮时,我的java程序正在打开新窗口。然后我需要关闭第一个窗口。当我尝试用System.exit(0);
关闭第一个窗口时,它会关闭第二个窗口。我试过setVisible(false);
然后第一个窗口没有关闭。请帮忙!
整个代码:
public class NameChooser extends JFrame implements ActionListener {
public NameChooser() {
RunNC();
}
public final void RunNC() {
JPanel panel = new JPanel();
JLabel label = new JLabel("Enter your name that will be shown in game!");
label.setBounds(20, 10, 500, 25);
panel.add(label);
JLabel error = new JLabel("");
error.setForeground(Color.red);
panel.add(error);
JTextField name = new JTextField(30);
name.setBounds(50, 40, 180, 25);
panel.add(name);
JButton playButton = new JButton( new AbstractAction("Play") {
@Override
public void actionPerformed(ActionEvent e) {
String enteredname = name.getText();
if("".equals(enteredname)) {
error.setVisible(true);
error.setText("Invalid name!");
error.setBounds(105, 95, 100, 25);
System.out.println("Invalid name!");
}
else if(enteredname.length() > 10) {
error.setVisible(true);
error.setText("Name cant have more than 10 characters!");
error.setBounds(25, 95, 600, 25);
System.out.println("Name cant have more than 10 characters!");
}
error.setVisible(false);
GameWindow game = new GameWindow();
game.StartGame();
// I need to close window on this line!
}
});
playButton.setBounds(110, 70, 60, 25);
panel.add(playButton);
}
任何帮助?
答案 0 :(得分:0)
导致问题的原因是System.exit()导致Java VM完全终止 - 并且两个窗口都在同一个VM实例上运行。
使用Jframe。dispose()代替你要关闭的那个。
答案 1 :(得分:-1)
System.exit(0);
不会“关闭窗口”,它会终止运行整个应用程序的JVM,因此会终止整个应用程序。
如果我们在讨论JFrame,请尝试使用dispose()
方法关闭单独的屏幕。
如果您希望我们对您的setVisible(false)
发表评论,请告诉我们您调用它的代码,可能是您在错误的变量上调用它。