【问题标题】:Painting new panel on top of another one在另一个面板上绘制新面板
【发布时间】:2011-04-07 00:09:05
【问题描述】:

我有一个程序,其中基本面板仅绘制背景(树木、水等),并且我有一个播放器和其他对象在屏幕周围移动。我不想在整个事情上调用 repaint() 因为它会减慢我的速度,因为它会重新绘制整个事情。当我尝试在顶部添加一个将重新绘制很多并处理移动对象的新面板时,我的代码中没有任何反应。这是我在构造函数中的第一个

public GamePanel()
{ //some code
   top = TopPanel();
   top.setSize(this.getSize());
   add(top);
 //some more code
}

然后在顶部面板的类中

public TopPanel()
    {

    }
    public void paintComponent(Graphics g)
    {
        i.drawItem(//);
        player.draw(//fields);
    }

无论我做什么,当我运行它时,我都无法在面板上显示任何内容。

【问题讨论】:

  • 您使用的是什么布局管理器,一个空布局?如果是这样,您需要设置 TopPanel 的位置和大小。
  • 如需尽快获得更好的帮助,请发帖SSCCE
  • 我试过了,唯一有效的方法是覆盖paintChildren,但这只会让事情变慢。

标签: java jpanel paint layer


【解决方案1】:

在渲染复杂但静态的“背景”并在顶部绘制其他内容时,我的一般方法是将背景绘制到 BufferedImage 并在绘制动态部分之前简单地重绘图像。

【讨论】:

  • 谢谢,这就像一个魅力,我不知道为什么我以前没有想到它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-14
  • 1970-01-01
相关资源
最近更新 更多