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

Java Swing-.dispose()方法未关闭JFrame,java,swing,jframe,Java,Swing,Jframe,我正在写一个基于两个JFrame的简单游戏。用户一次仅显示在JFrame上。要访问另一个JFrame,用户单击一个按钮。新JFrame中的按钮将具有一个重写方法,该方法应将用户导航回旧JFrame 我发现这样做很成功,但是当用户尝试导航回旧帧时,.dispose()方法似乎无法关闭新帧 以下是我的代码片段(原始JFrame类): 来自另一个JFrame类: public class TicTacToe extends JFrame implements ActionListener{ ....

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

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

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

来自另一个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();
    }
}
}
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();
    }
}

非常感谢您的帮助:)

如果您使用了类的对象,并且只调用了
Dispose()那么编译器是如何知道这个特定类的对象应该在调用时被释放的呢。?
因此,为了提供参考,您需要使用以下方法:

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

如果仍然存在问题,请告诉我。

不要向用户扔一堆窗口。相反,使用CardLayout在一个JFrame中给他们一个视觉中断并交换视图。你是否将
defaultCloseOperation
设置为其他的
DO\u NOTHING
?“我正在编写一个基于两个JFrame的简单游戏。看看这是如何获得4张投票权的?”??没有足够的代码来表达这个问题,同时也有不相关的代码(如
random\u generator
)。我非常怀疑他是否希望在dispose调用前几毫秒处理他显示的帧。请注意,代码所在的类是一个内部类。outter类扩展了
tictactoesignle
,它扩展了
JFrame
,我相信这是他试图处理的框架,而不是来自
twoPlayer
的框架。如果是这样,那么他对
dispose()
的调用就可以了。