我正在用java编写一个简单的2D游戏。到目前为止,我已经有了一个GGame类,它基本上描述了整个游戏/它的状态。与此GGame唯一相互作用是经由简单的Java /游戏的Swing GUI
GGame#render(width, height) : BufferedImage
和
GGame#addEvent(event) : void
当游戏启动一个JFrame被创建并且北京时间延伸的JPanel一个的GamePanel被添加到该帧。 GamePanel正在做所有事情,从发送事件到GGame并渲染/重新绘制自己。
现在我想在GGame的顶部添加一个GUI(库存,其他一些信息......)。我的想法是简单地让GUI扩展JPanel并将其添加到像GamePanel这样的框架,而GUI具有对GGame的参考来询问库存等。
要在这里明确,我不想添加GUI在GGame旁边,但在它之上。我的问题是,我总是需要传递给两个面板的所有事件,而最上面的一个(GUI)是透明的。此外,我希望这两个面板自动适应窗口大小(GamePanel通过每次渲染时获取面板大小来实现)。
最好的方式来实现这样的事情,为什么?
你是否简单地问如何将一个JPanel放在另一个JPanel上,在任何给定的时间只显示一个JPanel?如果是这样,请考虑https://docs.oracle.com/javase/tutorial/uiswing/components/layeredpane.html – c0der
基本上是的,但我不想自动适应窗口大小,我需要传递给两个面板的事件 –