多线程问题(请指教)

stone1982 2005-03-17 06:58:35
import java.awt.*;
public class PanelTest extends Frame
{
public PanelTest() //constructor
{ setTitle("paneltest");
Panel p = new Panel();
Canvas canvas = new Canvas();
p.setLayout(new FlowLayout());
p.add(new Button("Start"));
p.add(new Button("Close"));
add("South",p);
add("Center",canvas);
}

public boolean handleEvent(Event evt) // handle the event
{ if (evt.id == Event.WINDOW_DESTROY)
System.exit(0);
return super.handleEvent(evt);

}
public boolean action(Event evt,Object arg) //handle the event of the action
{ if (arg.equals("Start"))
{
Clock clock = new Clock(canvas);
clock.start();
}
else if (arg.equals("Close"))
System.exit(0);
else
return super.action(evt,arg);
return true;
}
public static void main(String[]args)
{ Frame f= new PanelTest();
f.resize(300,200);
f.show();
}
private Canvas canvas;

}
class Clock extends Thread
{ public Clock(Canvas c)
{
clockcanvas = c;
}
public void move()
{
Graphics g = clockcanvas.getGraphics();
g.drawOval(1,1,100,100); //draw the circle
double hourAngle = 2*Math.PI*(minutes-3*60)/(12*60);
double minuteAngle = 2*Math.PI*(minutes-15)/60;
g.drawLine(50,50,
50+(int)(30*Math.cos(hourAngle)),
50+(int)(30*Math.sin(hourAngle)));//draw the hour pointer
g.drawLine(50,50,
50+(int)(45*Math.cos(minuteAngle)),
50+(int)(45*Math.sin(minuteAngle)));//draw the minute pointer
minutes++;
g.dispose();
}
public void run()
{
move();
try{
Thread.sleep(1000);
}
catch(InterruptedException e)
{}
}
private int minutes = 0;
//private Graphics g;
private Canvas clockcanvas;
}
...全文
86 4 打赏 收藏 举报
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
有理生 2005-03-17
我也是个业余选手~~,不过对java特别感兴趣!不敢指教,交流倒可以。我的pipiren110@sina.com
  • 打赏
  • 举报
回复
stone1982 2005-03-17
嗯。谢谢,重新编译后,可以了。
可以请教你关于java编程方面的技术问题吗?我是一个新手,对java类的了解不多,
如果可以的话,下面是我的邮箱:

shidq@dhc.com.cn
期待回音!!
  • 打赏
  • 举报
回复
有理生 2005-03-17
run函数中用下面这样的循环
public void run()
{
while(true)
{
move();
try
{
Thread.sleep(1000);
}catch(InterruptedException e)
{
}
}
}
另外,每次画直线之前要擦除上次画的,自己写吧~~
  • 打赏
  • 举报
回复
有理生 2005-03-17
去掉第6行的Canvas,canvas是类的私有变量已经在下面声明。好像不是多线程问题!
  • 打赏
  • 举报
回复
相关推荐
发帖
Java SE
加入

6.2w+

社区成员

Java 2 Standard Edition
社区管理员
  • Java SE
申请成为版主
帖子事件
创建了帖子
2005-03-17 06:58
社区公告
暂无公告