Java在JPanel类之外绘制图像

时间:2011-03-07 22:54:29

标签: java image class jpanel paint

我有一个扩展JPanel的WorldManager类,并且具有:

public void paint(Graphics g) {}

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

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

1 个答案:

答案 0 :(得分:2)

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

  1. 注意到 trashgod ,您应该覆盖paintComponent方法而不是paint方法。

    article linked by trashgod中注明了这一点的原因:这样,paintBorder()paintChildren()方法可以对边框和子组件进行绘制,您可以自由地使用只考虑真实的内容。

  2. 你的其他绘画方法也应该采用Graphics参数(或Graphics2D,如果你需要这个并且只想要施放一次),然后再调用。
  3. 以下是一个例子:

    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);
        }
    }
    

    那么,你的问题究竟是什么?