多线程问题(请指教)

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;
}
...全文
120 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
有理生 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是类的私有变量已经在下面声明。好像不是多线程问题!

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧