paintComponent连续调用

时间:2014-04-10 09:30:26

标签: java swing paintcomponent

此处有类似的问题,但未找到答案:Why is paintComponent() continuously and asynchronously being called without explicit repaint() call?

我有一个我正在绘制的JPanel

class DrawPanel extends JPanel {

final void paintComponent(Graphics g) {
        super.paintComponent(g);
      // some graphics drawing stuff
} }

然后将其添加到JScrollPane。但是,如果我在paintComponent方法中放入system.out.println(),我可以看到它被连续调用。有办法阻止这个吗?根据链接,它可能由于jpanel被覆盖

2 个答案:

答案 0 :(得分:1)

通常paintComponent()不会绘制continually。当Swing确定需要绘制时,它会被调用occasionally

如果你的方法不断被调用,那么我可以想到几个可能的问题。你是:

  1. 手动调用repaint()
  2. 在paintComponent()方法中更改组件的属性,然后自动调用repaint()

答案 1 :(得分:0)

paintComponent调用来自Swing的Event Dispatch Thread。每次需要重新绘制组件时都会调用它。 如果您调整组件的大小或从最小化状态恢复,则重新绘制。当然,如果你用另一个组件覆盖它,那么重新绘制将被称为更少。另一个组件也有一个paintComponent方法。 无需担心。