我有两个面板:pnl和pnl2,pnl2上添加了一个名为car的标签(pnl2.add(car);)。
我将pnl的布局管理器更改为边框布局,并将pnl2添加到其南部(pnl.add(pnl2,BorderLayout.SOUTH);)。
pnl本身被添加到名为GameFrame的框架中,该框架扩展了JFrame(this.add(pnl);)。

pnl2是普通的JPanel,但是pnl是我命名为Road的类,该类扩展了JPanel,在此类中,我重写了paint方法以绘制特定对象(不同位置的白色矩形),并且在GameFrame框架的构造函数中使用计时器重绘pnl每个特定的延迟以产生动画(移动白色矩形)。

一切正常,但白色矩形始终绘制在名为car的标签的顶部,是否有办法使此car标签始终位于顶部?

最佳答案

意见建议:


重写JPanel的paintComponent而不是paint方法。 paint方法负责绘制JPanel的自身及其子级,这可能会使您陷入混乱,而paintComponent仅负责绘制JPanel本身。
确保在您的重写中调用super的paintComponent方法,因为组件需要自己进行内部管理绘画,包括清除脏像素,这是必需的。
确保只使用此方法进行绘制,不要做别的事情,没有程序逻辑,没有文件读入,没有改变对象的状态。
如果仍然卡住,请发布相关代码。

07-28 08:26