【问题标题】:paintComponent called continuously连续调用paintComponent
【发布时间】:2014-04-10 09:30:25
【问题描述】:

这里有类似问题但没有找到答案: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。但是,如果我将 system.out.println() 放在 paintComponent 方法中,我可以看到它不断被调用。有什么办法可以阻止这一切?根据链接,可能是因为 jpanel 被覆盖了

【问题讨论】:

    标签: java swing paintcomponent


    【解决方案1】:

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

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

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

    【讨论】:

    • 第 2 点是问题所在,我一直在尝试在油漆上调整它的大小,如果它太小,我会尝试将它放在油漆外。干杯。
    【解决方案2】:

    paintComponent 调用来自 Swing 的事件调度线程。每次需要重新绘制组件时都会调用它。 如果您调整组件的大小或将其从最小化状态恢复,则会重新绘制它。当然,如果你用另一个组件覆盖它,那么重绘将被调用得更少。另一个组件也将有一个paintComponent 方法。 没什么好担心的。

    【讨论】:

      猜你喜欢
      • 2013-07-09
      • 2017-01-03
      • 2013-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多