退出框架并创建新框架?

问题描述

        switch(arg0.getKeyCode()) {
    //if keycode is 'd' key
    case 68:
        
        break;
        
    case 65:
        System.out.println("stuff for left key using a");
        break;

    case 87:
        shark.MoveUp();
        break;
    case 38:
        shark.MoveUp();
        break;
    case 82:
        new Game();
        break;
    }

所以 Game 是类的名称。这不是 JFrame。当我尝试调用 jframe 时,它​​无法识别它。当我按“R”时,它会创建一个新游戏,但不会摆脱旧游戏。当旧游戏在后台运行时,新游戏由于滞后而无法播放。如何删除正在运行的旧游戏并只运行我在 case 82 中启动的新游戏?

解决方法

我强烈建议在旧游戏上使用 JFrame.dispose(),只要它扩展 JFrame。如果没有,您可以向 Game 类添加一个方法来处理它包含的 JFrame。这样的方法看起来像这样:

JFrame frame = new JFrame("game");//Lets assume thats your frame in Game

//that should be your method inside of Game class:
public void gameDispose(){
if(frame != null)
    frame.dispose();
}

现在您可能遇到的唯一问题是无法调用此 dispose 方法,因为您的游戏不在变量内。因此,当创建游戏时,它应该发生在一个变量内,如下所示:

Game g = new Game();//Just for understaning of g variable.

稍后需要时调用您的方法。

因此,您的代码应如下所示:

Game g = new Game();
    switch(arg0.getKeyCode()) {
    //if keycode is 'd' key
    case 68:
        
        break;
        
    case 65:
        System.out.println("stuff for left key using a");
        break;

    case 87:
        shark.MoveUp();
        break;
    case 38:
        shark.MoveUp();
        break;
    case 82:
        g.dispose().
        g = new Game()
        break;
    }