小钟表
来源:互联网 发布:淘宝网怎么付款方式 编辑:程序博客网 时间:2024/04/28 14:19
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import javax.swing.event.*;
public class FirstSample{
public static void main(String[] args){
ClockFrame frame=new ClockFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
class ClockFrame extends JFrame{
public ClockFrame(){
setTitle("Clock");
DocumentListener listener=new ClockFieldListener();
JPanel panel=new JPanel();
panel.add(new JLabel("Hours:"));
hourField=new JTextField("12",3);
panel.add(hourField);
hourField.getDocument().addDocumentListener(listener);
panel.add(new JLabel("Minutes:"));
minuteField=new JTextField("00",3);
panel.add(minuteField);
minuteField.getDocument().addDocumentListener(listener);
add(panel,BorderLayout.SOUTH);
clock=new ClockPanel();
add(clock,BorderLayout.CENTER);
pack();
}
public void setClock(){
try{
int hours=Integer.parseInt(hourField.getText().trim());
int minutes=Integer.parseInt(minuteField.getText().trim());
clock.setTime(hours,minutes);
}
catch (NumberFormatException e){}
}
private JTextField hourField;
private JTextField minuteField;
private ClockPanel clock;
private class ClockFieldListener implements DocumentListener{
public void insertUpdate(DocumentEvent event) {setClock();}
public void removeUpdate(DocumentEvent event) {setClock();}
public void changedUpdate(DocumentEvent event) {}
}
}
class ClockPanel extends JPanel{
public ClockPanel(){
setPreferredSize(new Dimension(2*RADIUS+1,2*RADIUS+1));
}
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2=(Graphics2D) g;
Ellipse2D circle=new Ellipse2D.Double(0,0,2*RADIUS,2*RADIUS);
g2.draw(circle);
double hourAngle=Math.toRadians(90-360*minutes/(12*60));
drawHand(g2,hourAngle,HOUR_HAND_LENGTH);
double minuteAngle=Math.toRadians(90-360*minutes/60);
drawHand(g2,minuteAngle,MINUTE_HAND_LENGTH);
}
public void drawHand(Graphics2D g2,double angle,double handLength){
Point2D end=new Point2D.Double(RADIUS+handLength*Math.cos(angle),RADIUS-handLength*Math.sin(angle));
Point2D center=new Point2D.Double(RADIUS,RADIUS);
g2.draw(new Line2D.Double(center,end));
}
public void setTime(int h,int m){
minutes=h*60+m;
repaint();
}
private double minutes=0;
private int RADIUS=100;
private double MINUTE_HAND_LENGTH=0.8*RADIUS;
private double HOUR_HAND_LENGTH=0.6*RADIUS;
}
- 小钟表
- 钟表小程序
- wp8小钟表
- Unity3D之自制小钟表
- 钟表
- Java小练习1(钟表)
- js拖拽框制作的时尚小钟表
- css3小模仿一下太阳系,钟表
- 【小工具】简单的小钟表
- 【Unity3D自学记录】Unity3D之自制小钟表
- flash 钟表 钟表代码
- 五个钟表
- 测试钟表
- 显示钟表
- JS 钟表
- 示波器钟表
- java钟表
- Unity3d 钟表
- 回顾JSP
- word文档段落对齐
- How To Split column In SQL
- IIS6.0手动安装与配置asp.net2.0全过程
- Crypto API加密通信流程
- 小钟表
- 进制换算
- CA/RA简介
- Create a dialog in Sharepoint 2010
- Virtual PC安装Linux花屏问题解决方案
- java 事务小结
- rowdatabound 取值 几种方法 [转]
- 没有找到cygwin1.dll
- WORD 域