黑马程序员技术交流社区

标题: 线程的问题 [打印本页]

作者: 文密    时间: 2012-4-8 21:59
标题: 线程的问题
一个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
请问是什么情况
能帮忙解决吗?
谢谢~
作者: 宋蕈    时间: 2012-4-9 08:46
问题1,你的paint方法的覆写应该是在直接继承了Frame类的tball中,而不是在thr里面。
问题2,你要想实现动态的滚动,即小球的在窗口中到达底部的时候,你要有判断,然后改变小球颜色。
作者: pray    时间: 2014-4-26 06:38
有空一起交流一下




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2