为什么要打印两次?

时间:2013-08-09 18:54:10

标签: java swing paintcomponent graphics2d

我注意到当我在java中使用paintComponent时,如果我使用System.out.println();,则会打印出2次,3次,有时4次。我知道当你使用extends JPanel时会自动调用它,但为什么会多一次。

以下是一些自己尝试的代码。

import javax.swing.*;
import java.awt.*;

public class stack extends JPanel{
public stack(){
    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
    frame.add(this);
    frame.setLocationRelativeTo(null);
    frame.setSize(200, 200);
    }
public static void main(String args[]){
    stack s = new stack();
    }
public void paintComponent(Graphics g){
    super.paintComponents(g);
    g.drawString("Thank You!", 100, 100);
    System.out.println("Why?");
}
}

1 个答案:

答案 0 :(得分:2)

System.out.println被调用一次 - 但您的方法可以重复调用。每次调用paintComponent时,都会打印Why?

这种方法被多次调用,即用于帧大小等等,反过来使sysout被执行多次。