A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 文密 中级黑马   /  2012-4-8 21:59  /  1855 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一个Frame上从左上角换一个小圆横向以速度10,纵向以速度5想右下角运动,运动到右下角时以原路返回,并且颜色从左上角的纯蓝色变成红色,再由红色变成纯蓝色,如此反复不断运动
下边时我写的:
import java.awt.*;
import java.awt.event.*;
public class tball extends Frame
{
thr th1;
tball()
{
  setVisible(true);
  setSize(170*5,85*5);
  th1=new thr();
  th1.start();
  addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){setVisible(false);System.exit(0);}});
  }
  class thr extends Thread
  {
   int x=0,y=0,r=0,g=0,b=255;
   public void run()
   {
    while(true)
    {
     x+=10;y+=5;
     r++;b--;repaint();
     if(x>170*5||y>85*5)
    {
     x=0;y=0;
    r=0;b=255;
    }
   
    try{sleep(200);}catch(InterruptedException e){}
   
    }
   }
    public void paint(Graphics g)
    {
     g.setColor(new Color(r,this.g,b));
     g.fillOval(x,y,5,5);
     }
   }
   public static void main(String args[])
   {
    tball ntb=new tball();
    }
}

但是运行时显示一片白色的Frame
请问是什么情况
能帮忙解决吗?
谢谢~

评分

参与人数 1技术分 +1 收起 理由
岳民喜 + 1

查看全部评分

2 个回复

倒序浏览
问题1,你的paint方法的覆写应该是在直接继承了Frame类的tball中,而不是在thr里面。
问题2,你要想实现动态的滚动,即小球的在窗口中到达底部的时候,你要有判断,然后改变小球颜色。
回复 使用道具 举报
有空一起交流一下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马