JAVA - 我有2个窗口,我需要关闭1个窗口

时间:2017-05-09 15:24:56

标签: java

当我在第一个窗口按一个按钮时,我的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);
}

任何帮助?

2 个答案:

答案 0 :(得分:0)

导致问题的原因是System.exit()导致Java VM完全终止 - 并且两个窗口都在同一个VM实例上运行。

使用Jframe。dispose()代替你要关闭的那个。

答案 1 :(得分:-1)

System.exit(0);

不会“关闭窗口”,它会终止运行整个应用程序的JVM,因此会终止整个应用程序。

如果我们在讨论JFrame,请尝试使用dispose()方法关闭单独的屏幕。

如果您希望我们对您的setVisible(false)发表评论,请告诉我们您调用它的代码,可能是您在错误的变量上调用它。