Почему paintComponent выполняется 2 раза? - PullRequest
3 голосов
/ 20 февраля 2012

У меня есть следующий код:

        canvas=new MembershipFunctionComponent(functions);
        canvas.setPreferredSize(new Dimension((int)this.getWidth(), (int)this.getHeight()));
        canvas.addMouseListener(canvas);
        pane.add(canvas);

MembsershipFunctionComponent расширяет JComponent. Почему метод paintComponent выполняется 2 раза?

1 Ответ

4 голосов
/ 20 февраля 2012

paintComponent может вызываться практически в любое время с помощью инфраструктуры Swing. Примеры того, когда это может произойти:

  • Каждый раз, когда размер компонента изменяется
  • Каждый раз, когда раскрывается часть компонента (например, в прокручиваемом окне)
  • Каждый раз, когда метод repaint () вызывается для вашего компонента (или, возможно, родительского или подкомпонента)
  • Каждый раз, когда происходит изменение макета

Ничто из этого не должно вас беспокоить - вам просто нужно написать свой код, чтобы не заботиться о том, сколько раз вызывается paintComponent.

...