2012-02-20 3 views
3

я следующий код:Почему paintComponent выполняется 2 раза?

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

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

ответ

4

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

  • Каждый раз, когда компонент изменяется
  • Каждый раз, когда часть компоненты раскрывается (например, в прокручиваемом окне)
  • В любое время метод перекрасить() называется на компоненте (или, возможно, один из родителей или суб-компонент)
  • Любое время существует Изменён макет

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

+2

Именно в этом случае логика программы не должна находиться в этом методе. 1+ –

Смежные вопросы