Java 返回在另一个类的方法中创建的对象|删除JFrame的内容

Java 返回在另一个类的方法中创建的对象|删除JFrame的内容,java,jframe,return,Java,Jframe,Return,在我的游戏中,玩家是使用 handler.addPlayer(new Player(x, y, width, height, ID, handler)); 到目前为止它还可以工作,但现在我需要在另一个类方法中使用这个播放器。 有没有办法检测到这个玩家并通过一个方法返回这个对象 另外,当玩家死亡时,我希望主类中的JFrame停止显示游戏,而是显示菜单屏幕。我试着用 JPanel mp = new JPanel(); mp.setBackground(Color.BLACK); [.. addi

在我的游戏中,玩家是使用

handler.addPlayer(new Player(x, y, width, height, ID, handler));
到目前为止它还可以工作,但现在我需要在另一个类方法中使用这个播放器。
有没有办法检测到这个玩家并通过一个方法返回这个对象

另外,当玩家死亡时,我希望主类中的JFrame停止显示游戏,而是显示菜单屏幕。我试着用

JPanel mp = new JPanel();
mp.setBackground(Color.BLACK);
[.. adding a button here ... ]
myFrame.removeAll();
myFrame.add(mp);

但是游戏崩溃了。

您可以在所需的类中始终拥有该
对象的实例,因此您只需将实际对象作为参数传递给新类的构造函数,或者通过setter进行设置。例如,如果在名为
a
的类中需要该播放器:

public class A {
    // some attributes
    Player p = null;

    public A(Player p){
        this.p = p;
    }

    public void setPlayer(Player p) {
        this.p = p;
    }
}
因此,从定义并初始化player为
handler.addPlayer(…)
的类中,可以创建一个新的
a
对象,并将实际的player作为参数传递到
a
构造函数中,或者使用
setPlayer()
。这样,您就可以在类
A
中拥有实际
Player
的实例


希望这有帮助。

如果这是您需要的,请接受答案;)它解决了第一个“问题”,但不是第二个:PSorry,我错过了第二部分。菜单屏幕和游戏是什么?他们每个人都有不同的JFrames吗?如果是这样,您可以始终使用
dispose()
方法释放其所有资源,使用
setVisible(true/false)
方法隐藏和显示所需的内容。如果在不同的JPanel中有菜单和游戏,那么您也可以使用
setVisible(true/false)
方法来完成我提到的完全相同的事情。听起来有些简单。不知道为什么我没想到那个xD谢谢兄弟:这很有帮助!继续编码!