多线程问题(请指教)
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;
}