texttest.java

来自「时钟的代码」· Java 代码 · 共 81 行

JAVA
81
字号
package clock;

import java.awt.*;
//import Corejava.*;



public class TextTest extends Frame {

	private TextField hourField;
	private TextField minuteField;
	private ClockCanvas clock;
	
	
public TextTest()
{setTitle("TextTest");
Panel p=new Panel();
p.setLayout(new FlowLayout());
p.add(new Button("Tick"));
p.add(new Button("Set Time"));
hourField=new TextField("12",3);
p.add(hourField);
minuteField=new TextField("00",3);
p.add(minuteField);

add("South",p);
clock=new ClockCanvas();
add("Center",clock);

}

public boolean handleEvent(Event evt)
{if(evt.id==Event.WINDOW_DESTROY) 
 System.exit(0);
return !(!super.handleEvent(evt));
}

public boolean action(Event evt,Object arg)
{if(arg.equals("Tick")) clock.tick();
else if (arg.equals("Set Time"))
{int hours=Integer.parseInt(hourField.getText());
int minutes=Integer.parseInt(minuteField.getText());
clock.setTime(hours,minutes);
}

else return false;
return true;
}
public static void main(String[] args)
{Frame f=new TextTest();
f.setSize(400,400);
f.setVisible(true);
}
}

class ClockCanvas extends Canvas{
	
	private int minutes=0;
	
	public void paint(Graphics g)
	{g.drawOval(0,0,100,100);
	double hourAngle=2*Math.PI*(minutes-3*60)/(12*60);
	double minuteAngle=2*Math.PI*(minutes-15)/60;
	System.out.println(hourAngle);
	System.out.println(minuteAngle);
	g.drawLine(50,50,50+(int)(30*Math.cos(hourAngle)),50+(int)(30*Math.sin(hourAngle)));
	System.out.println(Math.sin(hourAngle));
	g.drawLine(50,50,50+(int)(45*Math.cos(minuteAngle)),50+(int)(45*Math.sin(minuteAngle)));
	System.out.println(Math.cos(minuteAngle));}
	
public void setTime(int h,int m)
{minutes=h*60+m;
repaint();
	}

public void tick()
{minutes++;
repaint();
}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?