写一个不会动的时钟

package thinking;

import java.awt.*;
import javax.swing.*;
import java.util.*;

public class My extends JFrame{
	public My(){
		StillClock clock = new StillClock();
		MessagePanel messagePanel = new MessagePanel("" + clock.getHour() + ":" + 
		clock.getMinute() + ":" + clock.getSecond());
		messagePanel.setCenter(true);
		messagePanel.setForeground(Color.blue);
		messagePanel.setFont(new Font("Courier",Font.BOLD,16));
		setLayout(new GridLayout(0,1,5,5));
		add(messagePanel);
		add(clock);
	}
	public static void main(String[] args){
		My frame = new My();
		frame.setTitle("DisplayClock");
		frame.setSize(500,500);
		frame.setLocationRelativeTo(null);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setVisible(true);
	}
}


class MessagePanel extends JPanel{
	private String message = "welcome to Java!";
	private boolean centered;
	private int xCoodinate = 20;
	private int yCoodinate = 20;
	
	public MessagePanel(){
	}
	public MessagePanel(String message){
		this.message = message;
	}
	
	public String getMessage(){
		return message;
	}
	public void setMessage(String message){
		this.message = message;
		repaint();
	}
	public boolean isCenter(){
		return centered;
	}
	public void setCenter(boolean centered){
		this.centered = centered;
	}
	protected void paintComponent(Graphics g){
		super.paintComponent(g);
		
		if(centered){
			FontMetrics fm = g.getFontMetrics();
			
			int stringWidth = fm.stringWidth(message);
			int stringAscent = fm.getAscent();
			xCoodinate = getWidth()/2 - stringWidth/2;
			yCoodinate = getHeight()/2 - stringAscent/2;
		}
		
		g.drawString(message, xCoodinate, yCoodinate);
	}
	
}

class StillClock extends JPanel{
	private int hour;
	private int minute;
	private int second;
	
	public StillClock(){
		setCurrentTime();
	}
	public StillClock(int hour , int minute , int second){
		this.hour = hour;
		this.minute = minute;
		this.second = second;
	}
	
	public int getHour(){
		return hour;
	}
	public void setHour(int hour){
		this.hour = hour;
		repaint();
	}
	public int getMinute(){
		return minute;
	}
	public void setMinute(int minute){
		this.minute = minute;
		repaint();
	}
	public int getSecond(){
		return second;
	}
	public void setSecond(int second){
		this.second = second;
		repaint();
	}
	
	protected void paintComponent(Graphics g){
		super.paintComponent(g);
		
		int clockRadius = (int)(Math.min(getWidth(), getHeight())*0.8*0.5);
		int xCenter = getWidth()/2;
		int yCenter = getHeight()/2;
		
		g.setColor(Color.BLACK);
		g.drawOval(xCenter - clockRadius , yCenter - clockRadius , 
				2*clockRadius , 2*clockRadius); 
		g.drawString("12", xCenter - 5 , yCenter - clockRadius + 12);
		g.drawString("9", xCenter - clockRadius + 3 , yCenter + 5);
		g.drawString("3", xCenter + clockRadius - 10 , yCenter + 3);
		g.drawString("6", xCenter - 3 , yCenter + clockRadius - 3);
		
		int sLength = (int)(clockRadius * 0.8);
		int xSecond = (int)(xCenter + sLength * Math.sin(second * (2 * Math.PI/60)));
		int ySecond = (int)(yCenter - sLength * Math.cos(second * (2 * Math.PI/60)));
		g.setColor(Color.RED);
		g.drawLine(xCenter,yCenter,xSecond,ySecond);
		
		int mLength = (int)(clockRadius * 0.65);
		int xMinute = (int)(xCenter + mLength * Math.sin(minute * (2 * Math.PI/60)));
		int yMinute = (int)(yCenter - mLength * Math.cos(minute * (2 * Math.PI/60)));
		g.setColor(Color.BLUE);
		g.drawLine(xCenter, yCenter, xMinute, yMinute);
		
		int hLength = (int)(clockRadius * 0.5);
		int xHour = (int)(xCenter + hLength * Math.sin(hour * (2 * Math.PI/60)));
		int yHour = (int)(yCenter - hLength * Math.cos(hour * (2 * Math.PI/60)));
		g.setColor(Color.BLACK);
		g.drawLine(xCenter, yCenter, xHour, yHour);
	}
	
	public void setCurrentTime(){
		Calendar calendar = new GregorianCalendar();
		
		this.hour = calendar.get(Calendar.HOUR_OF_DAY);
		this.minute = calendar.get(Calendar.MINUTE);
		this.second = calendar.get(Calendar.SECOND);
	}
	
	public Dimension getPreferredSize(){
		return new Dimension(200,200);
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
牙科就诊管理系统利用当下成熟完善的SSM框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的Mysql数据库进行程序开发。实现了用户在线查看数据。管理员管理病例管理、字典管理、公告管理、药单管理、药品管理、药品收藏管理、药品评价管理、药品订单管理、牙医管理、牙医收藏管理、牙医评价管理、牙医挂号管理、用户管理、管理员管理等功能。牙科就诊管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自化。 管理员在后台主要管理病例管理、字典管理、公告管理、药单管理、药品管理、药品收藏管理、药品评价管理、药品订单管理、牙医管理、牙医收藏管理、牙医评价管理、牙医挂号管理、用户管理、管理员管理等。 牙医列表页面,此页面提供给管理员的功能有:查看牙医、新增牙医、修改牙医、删除牙医等。公告信息管理页面提供的功能操作有:新增公告,修改公告,删除公告操作。公告类型管理页面显示所有公告类型,在此页面既可以让管理员添加新的公告信息类型,也能对已有的公告类型信息执行编辑更新,失效的公告类型信息也能让管理员快速删除。药品管理页面,此页面提供给管理员的功能有:新增药品,修改药品,删除药品。药品类型管理页面,此页面提供给管理员的功能有:新增药品类型,修改药品类型,删除药品类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值