packagecom.srie.test;importjava.awt.BorderLayout;importjava.awt.EventQueue;importjava.awt.Graphics;importjavax.swing.JFrame;importjavax.swing.JPanel;importjavax.swing.border.EmptyBorder;public class JFrame002 extendsJFrame {private static final long serialVersionUID = 1L;privateJPanel contentPane;public static voidmain(String[] args) {
EventQueue.invokeLater(newRunnable() {public voidrun() {try{
JFrame002 frame= newJFrame002();
frame.setSize(80, 60);
frame.setVisible(true);
}catch(Exception e) {
e.printStackTrace();
}
}
});
}/*** Create the frame.*/
publicJFrame002() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane= newJPanel() {private static final long serialVersionUID = 1L;int j = 10000;//如果override paint方法,就不会执行paintComponent方法
@Overridepublic voidpaint(Graphics g) {
System.out.println("com.srie.test.JFrame002.JFrame002().new JPanel() {...}.paint(Graphics):" + j++);
}
@Overrideprotected voidpaintComponent(Graphics g) {
System.out.println("com.srie.test.JFrame002.JFrame002().new JPanel() {...}.paintComponent(Graphics):" + j++);
}
@Overridepublic voidupdate(Graphics g) {
System.out.println("com.srie.test.JFrame002.JFrame002().new JPanel() {...}.update(Graphics):" + j++);
}
@Overridepublic voidrepaint() {//最开始打印的时候,j输出的竟然是0,在4种初始化之后,才把j初始化了;
System.out.println("com.srie.test.JFrame002.JFrame002().new JPanel() {...}.repaint():" + j++);
}
};
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));//这个会增加一次repaint方法的调用;
contentPane.setFont(null);//contentPane.setMinimumSize(new Dimension(10, 10));
setContentPane(contentPane);
}int i = 0;//这个放开了之后,里面的内容都不进行重绘了;只是在初始化的时候里面repaint了6次;//@Override//public void paint(Graphics g) {//System.out.println("com.srie.test.JFrame002.paint(Graphics):" + i++);//}//这个不是paintComponent,多了一个s哦;是java.awt.Container的方法;
@Overridepublic voidpaintComponents(Graphics g) {
System.out.println("com.srie.test.JFrame002.paintComponents(Graphics):" + i++);
}
@Overridepublic voidupdate(Graphics g) {
System.out.println("com.srie.test.JFrame002.update(Graphics):" + i++);
}
@Overridepublic voidrepaint() {
System.out.println("com.srie.test.JFrame002.repaint():" + i++);
}
}