多线程问题(请指教)

stone1982 stone1982 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
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;
}
...全文
评论 4
收藏 已收藏
分享
返回顶部
stone1982
Java SE 62,620 成员 307,251 内容