我最近在尝试为我的框架创建叠加层时偶然发现了一个问题。该框架由2个面板组成,GamePanel
和OverlayPanel
,每个面板都有自己的paint
方法。为了保持代码清洁和提高效率,我将它们分开了。不过,我现在遇到的问题是我的paintComponent
方法相互重叠,导致一次只能看到一个绘制的面板。
据我所知,这很可能是因为两个面板都覆盖了整个屏幕。然而,OverlayPanel
上绘制的内容仅覆盖屏幕的一部分。
目标是GamePanel
将绘制某种地图,然后OverlayPanel
会在此地图顶部的给定位置绘制一个矩形等内容。
我的方法是错误的,还是我缺少的东西?
答案 0 :(得分:1)
我的做法是错误的,......
是。可以将绘图操作分离为单独的类中的单独方法,但仍然可以通过单个方法完成整个绘制操作。
想象一下,Map
类有draw(Graphics2D)
方法,RectangularPlayer
类也有draw(Graphics2D)
方法。每个类都知道如何将自己的部件绘制到通用图形实例。在paintComponent(Graphics)
类的GameField
方法中,调用地图和玩家类的相关绘制方法,以及需要渲染的任何其他游戏元素。