在一个jframe中的两个jpanel中使用两种绘制方法

时间:2017-01-18 18:14:30

标签: java swing jpanel paint paintcomponent

我最近在尝试为我的框架创建叠加层时偶然发现了一个问题。该框架由2个面板组成,GamePanelOverlayPanel,每个面板都有自己的paint方法。为了保持代码清洁和提高效率,我将它们分开了。不过,我现在遇到的问题是我的paintComponent方法相互重叠,导致一次只能看到一个绘制的面板。

据我所知,这很可能是因为两个面板都覆盖了整个屏幕。然而,OverlayPanel上绘制的内容仅覆盖屏幕的一部分。

目标是GamePanel将绘制某种地图,然后OverlayPanel会在此地图顶部的给定位置绘制一个矩形等内容。

我的方法是错误的,还是我缺少的东西?

1 个答案:

答案 0 :(得分:1)

  

我的做法是错误的,......

是。可以将绘图操作分离为单独的类中的单独方法,但仍然可以通过单个方法完成整个绘制操作。

想象一下,Map类有draw(Graphics2D)方法,RectangularPlayer类也有draw(Graphics2D)方法。每个类都知道如何将自己的部件绘制到通用图形实例。在paintComponent(Graphics)类的GameField方法中,调用地图和玩家类的相关绘制方法,以及需要渲染的任何其他游戏元素。