java中的 JFrame 与 Frame(二)

public class A  extends Frame{   //   JFrame  与Frame 
int  x=50;
int  y=50;
@Override
public void paint(Graphics g) {
Color c = g.getColor();
g.setColor(Color.blue);
g.fillOval(x, y, 20, 20);
g.setColor(c);

y+=5;
}

public void b(){

this.setLocation(400,150);
this.setBackground(Color.green);
this.setSize(800, 600);
this.setVisible(true);
this.setResizable(false);
//this.setDefaultCloseOperation(EXIT_ON_CLOSE);
new Thread(new Th()).start();
}


public static void main(String[] args) {
A a = new A();
a.b();
}

class Th implements Runnable {
public void run() {
while(true){
repaint();
try {
Thread.sleep(200);
} catch (Exception e) {
// TODO: handle exception
}
}

}
}


}


这段代码是画一个小球不断的运动。

在 JFrame与Frame中效果是不同的。

在Frame中效果如下:





在JFrame中效果如下:

小球变成了一条线.





导致这两种的结果的原因是:

在快画出来的时候,也就是在调用陪paint()方法之前,Frame重画了面板(也就是调用了update() ),使小球走过的痕迹被抹掉,而JFrame没有重画面板,留下了小球走过的痕迹,也就留下了长长的一条尾巴。


欢迎大家来一起讨论。


此为个人记录,如有雷同,不胜荣幸。






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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值