⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 clock.java

📁 此文件名叫暑期
💻 JAVA
字号:
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import javax.swing.*;
import javax.swing.event.*;
import java.util.*;
import java.util.concurrent.*;

import java.lang.*;

public class Clock {
public static void main(String[] args){
	Date me = new Date();
	System.out.println(me.getHours());
	long s = new Date().getTime();
	System.out.println(s);
    
	ClockTestFrame frame = new ClockTestFrame();
    
	frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	frame.setVisible(true);
    
	
}
}


class ClockTestFrame  extends JFrame {
	public ClockTestFrame(){
		JLabel titleLabel;
		titleLabel = new JLabel(new ImageIcon(".\\background.jpg"));
		add(titleLabel, BorderLayout.CENTER);
		setTitle("小型模拟时钟");
		DocumentListener listener = new ClockFieldListener();
		JPanel panel = new JPanel();
		Date your = new Date();
		int i = your.getHours(); 
		 
		panel.add(new JLabel("小时:"));
		hourField = new JTextField( Integer.toString(i),3);
		panel.add(hourField);
		hourField.getDocument().addDocumentListener(listener);
		
		panel.add(new JLabel("分钟:"));
		minuteField = new JTextField(Integer.toString(your.getMinutes()),3);
		panel.add(minuteField);
		minuteField.getDocument().addDocumentListener(listener);
		
		panel.add(new JLabel("秒:"));
		secondField = new JTextField(Integer.toString(your.getSeconds()),3);
		panel.add(secondField);
		secondField.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());
			int second = Integer.parseInt(secondField.getText().trim());
			clock.setTime(hours,minutes,second);
		}
		catch (NumberFormatException e){}
	}
	public static final int DEFAULT_WIDTH = 600;
	public static final int DEFAULT_HEIGHT = 600;
	
	
	private JTextField hourField;
	private JTextField minuteField;
	private JTextField secondField;
	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);
		
		double secondAngle = Math.toRadians(90-360*minutes);
		drawHand(g2,secondAngle,SECOND_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,int s){
		minutes = h *60+m;
		second = minutes*60+s; 
		repaint();
	}
	
	private double minutes = 0;
	private double second = 0;
	private int RADIUS = 100;
	private double MINUTE_HAND_LENGTH = 0.8*RADIUS;
	private double HOUR_HAND_LENGTH = 0.6*RADIUS;
	private double SECOND_HAND_LENGTH = 1.0*RADIUS;
}

⌨️ 快捷键说明

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