java panel paint_Java Swing jpanel paint方法执行两次的问题

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++);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值