Java Swing - .dispose()方法没有关闭JFrame

时间:2014-03-18 03:01:06

标签: java swing jframe

我正在编写一个基于两个JFrame的简单游戏。用户一次只显示在JFrame上。要访问其他JFrame,用户单击一个按钮。新JFrame中的按钮将具有覆盖方法,该方法应将用户导航回旧JFrame。

我发现这样做很成功但是当用户尝试导航回旧框架时,.dispose()方法似乎不会关闭新框架。

这是我的代码片段(原始JFrame类):

public class TicTacToe extends JFrame implements ActionListener{

....

public class gameModeListener implements ActionListener
{
    @Override public void actionPerformed(ActionEvent e)
    {
        TicTacToeSingle singlePlayer = new TicTacToeSingle();
        singlePlayer.setVisible(true);
        dispose();
    }
}
}

来自其他JFrame类:

public class TicTacToeSingle extends TicTacToe{

private int i;
private int j;
 JButton boardArray[][];
 Random random_generator = new Random();
 int randomI;
 int randomJ;

public TicTacToeSingle()
{
    super("Single Player");
    gameMode.setText("Two Player"); //gameMode is the button that has it's actionlistener method overriden. It navigates the user to and back from JFrame to JFrame

    gameMode.addActionListener(new gameModeListener()); 

    ....
}

 ....

public class gameModeListener implements ActionListener
{
    @Override public void actionPerformed(ActionEvent e)
    {
        TicTacToe twoPlayer = new TicTacToe("Two Player");
        twoPlayer.setVisible(true);
        dispose();
    }
}

非常感谢您的帮助:)

1 个答案:

答案 0 :(得分:-1)

当你使用了类的Object并且你只是调用Dispose();时,编译器如何知道对于这个特定的类对象应该在那个调用上进行处理。 所以为了提供参考你需要使用这个试试这个:

 TicTacToe twoPlayer = new TicTacToe("Two Player");
        twoPlayer.setVisible(true);
        twoPlayer.dispose();

如果还有问题,请告诉我。