此处有类似的问题,但未找到答案: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被覆盖
答案 0 :(得分:1)
通常paintComponent()不会绘制continually
。当Swing确定需要绘制时,它会被调用occasionally
。
如果你的方法不断被调用,那么我可以想到几个可能的问题。你是:
答案 1 :(得分:0)
paintComponent调用来自Swing的Event Dispatch Thread。每次需要重新绘制组件时都会调用它。 如果您调整组件的大小或从最小化状态恢复,则重新绘制。当然,如果你用另一个组件覆盖它,那么重新绘制将被称为更少。另一个组件也有一个paintComponent方法。 无需担心。