在一个 jframe 中的两个 jpanel 中使用两种绘制方法
Using two paint methods in two jpanels in one jframe
我最近在尝试为我的框架创建叠加层时偶然发现了一个问题。该框架由 2 个面板组成,一个 GamePanel
和一个 OverlayPanel
,每个面板都有自己的 paint
方法。我将它们分开是为了让我的代码更简洁并提高效率。不过,我现在遇到的问题是我的 paintComponent
方法相互重叠,导致一次只能看到一个绘制的面板。
我知道这很可能是由于两个面板都覆盖了整个屏幕造成的。然而,OverlayPanel
上正在绘制的内容仅覆盖了屏幕的一部分。
目标是 GamePanel
将绘制某种地图,然后 OverlayPanel
将在此地图顶部的给定位置绘制诸如矩形之类的东西。
我的处理方法是错误的,还是我遗漏了什么?
Is my approach to this wrong, ..
是的。可以将绘图操作分离到单独的 classes 中的单独方法中,但仍然可以通过单个方法完成整个绘制操作。
假设有一个 Map
class 有一个 draw(Graphics2D)
方法,还有一个 RectangularPlayer
class 也有一个 draw(Graphics2D)
方法。每个 class 都知道如何将自己的部分绘制到公共图形实例中。在GameField
class的paintComponent(Graphics)
方法中,调用地图和玩家classes的相关draw方法,以及其他任何需要渲染的游戏元素.
我最近在尝试为我的框架创建叠加层时偶然发现了一个问题。该框架由 2 个面板组成,一个 GamePanel
和一个 OverlayPanel
,每个面板都有自己的 paint
方法。我将它们分开是为了让我的代码更简洁并提高效率。不过,我现在遇到的问题是我的 paintComponent
方法相互重叠,导致一次只能看到一个绘制的面板。
我知道这很可能是由于两个面板都覆盖了整个屏幕造成的。然而,OverlayPanel
上正在绘制的内容仅覆盖了屏幕的一部分。
目标是 GamePanel
将绘制某种地图,然后 OverlayPanel
将在此地图顶部的给定位置绘制诸如矩形之类的东西。
我的处理方法是错误的,还是我遗漏了什么?
Is my approach to this wrong, ..
是的。可以将绘图操作分离到单独的 classes 中的单独方法中,但仍然可以通过单个方法完成整个绘制操作。
假设有一个 Map
class 有一个 draw(Graphics2D)
方法,还有一个 RectangularPlayer
class 也有一个 draw(Graphics2D)
方法。每个 class 都知道如何将自己的部分绘制到公共图形实例中。在GameField
class的paintComponent(Graphics)
方法中,调用地图和玩家classes的相关draw方法,以及其他任何需要渲染的游戏元素.