【问题标题】:Java drawing images outside of JPanel classJava 在 JPanel 类之外绘制图像
【发布时间】:2011-03-07 22:54:28
【问题描述】:

我有一个 WorldManager 类,它扩展了一个 JPanel 并具有:

public void paint(Graphics g) {}

我想做的是有单独的类,比如一个有自己的绘制方法的世界类,并且能够像这样调用这些类的绘制方法:

public void paint(Graphics g) { world1.paint(); hero.paint(); }

【问题讨论】:

标签: java image class jpanel paint


【解决方案1】:

原则上,您的方法没有任何问题。

  1. 正如trashgod所说,您应该覆盖paintComponent 方法而不是paint 方法。

    原因在article linked by trashgod中注明:这样paintBorder()paintChildren()方法就可以自己画边框和子组件了,你可以只考虑真实的内容.

  2. 您的其他绘制方法也应采用 Graphics 参数(或 Graphics2D,如果您需要此参数并且只想投射一次),然后被调用。

这是一个例子:

class WorldManager extends JPanel
{

    private World world1;
    private Person hero;

    public void paintComponent(Graphics g) {
         super.paintComponent(); // paints the background, if opaque
         world.paint(g);
         hero.paint(g);
    }
}

那么,实际上你的问题是什么?

【讨论】:

  • @Paulo 因此,我将 WorldManager 中的paint 方法更改为paintComponent 方法并调用了 super.paintComponent(g) 并且它可以工作,但是您能否向我解释为什么我必须使用 paintComponent 而不是常规的绘画方法?
  • @Chris 请不要忘记将问题标记为“已回答/正确”。这有助于日后寻找答案的人。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-23
相关资源
最近更新 更多