Java рисует изображения вне класса JPanel - PullRequest
0 голосов
/ 08 марта 2011

У меня есть класс WorldManager, который расширяет JPanel и имеет:

public void paint(Graphics g) {}

Я хотел бы иметь отдельные классы, например, мировой класс с собственным методом рисованияи можно просто вызывать этот метод рисования классов следующим образом:

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

1 Ответ

2 голосов
/ 08 марта 2011

В принципе, в вашем подходе нет ничего плохого.

  1. Как отмечалось trashgod , вы должны перезаписать метод paintComponent вместо метода рисования.

    Причина этого указана в статья, связанная с 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);
    }
}

Итак, какой у вас был вопрос, на самом деле?

...