首页 文章

即使在java中重新绘制时,始终将标签设置在顶部?

提问于
浏览
0

我有两个面板: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,在这个类中我覆盖了绘制特定对象的绘制方法(白色矩形在不同的位置),并且在框架的构造函数中GameFrame我正在使用计时器重新绘制每个特定延迟的pnl以产生动画(移动白色矩形) .

一切都运作良好,但白色矩形总是绘制在名为car的标签的顶部,有没有办法让这个汽车标签始终位于顶部?

1 回答

  • 1

    建议:

    • 覆盖JPanel的paintComponent not paint方法 . paint方法负责绘制JPanel的self and its children ,这会让你搞砸,whild paintComponent只负责绘制JPanel本身 .

    • 请务必在覆盖中调用super的paintComponent方法,因为组件需要执行自己的管家绘画,包括删除脏像素 .

    • 一定要只在这个方法中进行绘画,没有别的,没有程序逻辑,没有读入文件,也没有改变对象的状态 .

    • 如果仍然卡住,请发布相关代码 .

相关问题