java窗口添加时间_java时钟添加日期

展开全部

完整的

import java.awt.BasicStroke;

import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics;

import java.awt.Graphics2D;

import java.awt.Insets;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Date;

import java.util.GregorianCalendar;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.Timer;

///定义类TestClock继承JFrame类实现ActionListener接口

class TestClock extends JFrame implements ActionListener {

int x, y, x0, y0, r, h, olds_x, olds_y, oldm_x, oldm_y, oldh_x, oldh_y, ss,

mm, hh, old_m, old_h, ang;

final double RAD = Math.PI / 180;// 这个应该是算一个弧度吧

// 构造函数32313133353236313431303231363533e78988e69d8331333332393365创建一个窗体

public TestClock() {

super("模拟时钟");

setDefaultCloseOperation(3);// 等同于this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

setSize(500, 250);

setBackground(Color.white);

setLocation(300, 150);

setResizable(true);// //设置窗口能否拉伸

setVisible(true);// /窗口能见

int delay = 1000;

// 创建一个监听事件

ActionListener drawTestClock = new ActionListener() {

public void actionPerformed(ActionEvent evt) {

repaint();

}

};

// 创建一个时间计数器

new Timer(delay, drawTestClock).start();

}

// 实现ActionListener接口必须实现的方法

public void actionPerformed(ActionEvent e) {

}

// 绘制图形

public void paint(Graphics g) {

Color c = g.getColor();

Insets insets = getInsets();

int L = (insets.left- 50) / 2, T = (insets.top - 50 ) / 2;// 长高

g.setColor(Color.WHITE);

g.drawRect(0, 0, L, T );

Graphics2D g2D = (Graphics2D) g;// 将图形对象强制转换为类型

h = getSize().height;

g.setColor(Color.gray);

// 画圆

g2D.setStroke(new BasicStroke(3.9f));// 圈的线段的粗细

int qx = L + 40, qy = T + 40;

int qw = h - 80;

g.drawOval(qx, qy, qw, qw);// 圆的位置

r = h / 2 - 40;// 圆的半径

x0 = 40 + r - 5 + L;

y0 = 40 + r - 5 - T;

ang = 60;

// ///

g.setFont(new Font("SansSerit", Font.BOLD, 12));// 使字体变粗

g.setColor(new Color(255, 10, 190));

g.drawString(" this is our clock", 200, 100);

// 绘制时钟上的12个汉字

for (int i = 1; i <= 12; i++) {

g.setColor(Color.blue);

x = (int) ((r + 10) * Math.cos(RAD * ang) + x0);

y = (int) ((r + 10) * Math.sin(RAD * ang) + y0);

g.drawString("" + i, x, h - y);

ang -= 30;

}

// 获得现在时间,年月日没弄好

JButton a = new JButton("设置时间");

Calendar now = new GregorianCalendar();

Date dt = new Date();

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");// 设置日期格式

g.setColor(Color.yellow);

g.fillRoundRect(qx, qy+qw+10, qw, 30, 30, 30);// 实心椭圆

g.setColor(Color.RED);

g.drawString(df.format(dt), (qx+qw-40)/2, qy+qw+30);

int nown = now.get(Calendar.YEAR);

int nowy = now.get(Calendar.MONTH);

int nowd = now.get(Calendar.DATE);

int nowh = now.get(Calendar.HOUR_OF_DAY);

int nowm = now.get(Calendar.MINUTE);

int nows = now.get(Calendar.SECOND);

int nowmi = now.get(Calendar.MILLISECOND);

String s;

if (nowh < 10)

s = "0" + nowh;

else

s = "" + nowh;

if (nowy < 10)

s += "-0" + nowy;

else

s = "-" + nowy;

String st;

if (nowh < 10)

st = "0" + nowh;

else

st = "" + nowh;

if (nowm < 10)

st += ":0" + nowm;

else

st += ":" + nowm;

if (nows < 10)

st += ":0" + nows;

else

st += ":" + nows;

String str;

if (nowh < 10)

str = "0" + nowh;

else

str = "" + nowh;

if (nowm < 10)

str += ":0" + nowm;

else

str += ":" + nowm;

if (nows < 10)

str = ":0" + nows;

else

str += ":" + nows;

if (nowmi < 10)

str += ":0" + str;

else

str += ":" + nowmi;

// 在窗体上显示时间

g.setColor(Color.green);

g.drawLine(0, 30, 500, 30);

g.drawLine(0, 10, 200, 20);

g.setColor(Color.pink);

g.fill3DRect(300, 50, 100, 30, false);// 空心矩形

g.setColor(Color.pink);

g.drawString(st, 330, 70);

g.setColor(Color.yellow);

g.fillRoundRect(310, 100, 100, 30, 30, 30);// 实心椭圆

g.setColor(Color.green);

g.drawString(str, 330, 120);

// 计算时间与度数的关系

ss = 90 - nows * 6;

mm = 90 - nowm * 6;

hh = 90 - nowh * 30 - nowm / 2;

x0 = r + 40 + L;

y0 = r + 40 + T;

g2D.setStroke(new BasicStroke(1.2f));

// 擦除秒针

if (olds_x > 0) {

g.setColor(getBackground());

g.drawLine(x0, y0, olds_x, h - olds_y);

} else {

old_m = mm;

old_h = hh;

}

// 绘制秒针

x = (int) (r * 0.9 * Math.cos(RAD * ss)) + x0;

y = (int) (r * 0.9 * Math.sin(RAD * ss)) + y0 - 2 * T;

g.setColor(Color.yellow);

g.drawLine(x0, y0, x, h - y);

olds_x = x;

olds_y = y;

g2D.setStroke(new BasicStroke(2.2f));

// 擦除分针

if (old_m != mm) {

g.setColor(getBackground());

g.drawLine(x0, y0, oldm_x, h - oldm_y);

}

// 绘制分针

x = (int) (r * 0.7 * Math.cos(RAD * mm)) + x0;

y = (int) (r * 0.7 * Math.sin(RAD * mm)) + y0 - 2 * T;

g.setColor(Color.green);

g.drawLine(x0, y0, x, h - y);

oldm_x = x;

oldm_y = y;

old_m = mm;

g2D.setStroke(new BasicStroke(3.4f));

// 擦除时针

if (old_h != hh) {

g.setColor(getBackground());

g.drawLine(x0, y0, oldh_x, h - oldh_y);

}

// 绘制时针

x = (int) (r * 0.5 * Math.cos(RAD * hh)) + x0;

y = (int) (r * 0.5 * Math.sin(RAD * hh)) + y0 - 2 * T;

g.setColor(Color.red);

g.drawLine(x0, y0, x, h - y);

oldh_x = x;

oldh_y = y;

old_h = hh;

g.setColor(c);

}

public static void main(String[] args) {

new TestClock();

}

}

本回答由提问者推荐

2Q==

已赞过

已踩过<

你对这个回答的评价是?

评论

收起

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
表盘式时钟,并显import java.awt.*; import java.awt.event.*; import javax.swing.*; import sun.util.calendar.Gregorian; import java.util.Calendar; import java.util.GregorianCalendar; public class Clock extends JFrame implements ActionListener{ int x, y, x0, y0, r, h, olds_x, olds_y, oldm_x, oldm_y, oldh_x, oldh_y, ss,mm,hh,old_m,old_h,ang; final double RAD = Math.PI/180; public Clock(){ super("Java时钟"); setDefaultCloseOperation(3); Image image = getToolkit().getImage("clock.gif"); setIconImage(image); setSize(200,200); setBackground(Color.black); setLocation(300,150); setResizable(false); show(); int delay = 1000; //创建一个监听事件 ActionListener drawClock = new ActionListener(){ public void actionPerformed(ActionEvent evt){ repaint(); } }; //创建一个时间计数器,每一秒触发一次 new Timer(delay,drawClock).start(); } //实现ActionListener接口必须实现的方法 public void actionPerformed(ActionEvent evt){} //绘制图形 public void paint(Graphics g){ Graphics2D g2D = (Graphics2D)g; Insets insets = getInsets(); int L = insets.left/2, T = insets.top/2; h = getSize().height; g.setColor(Color.white); //画圆 g2D.setStroke(new BasicStroke(4.0f)); g.drawOval(L+40, T+40, h-80, h-80); r = h/2 - 40; x0 = 40 + r - 5 + L; y0 = 40 + r - 5 - T; ang = 60; //绘制时钟上的12个字 for(int i = 1;i <= 12;i ++){ x = (int)((r+10)*Math.cos(RAD*ang)+x0); y = (int)((r+10)*Math.sin(RAD*ang)+y0); g.drawString(""+i, x, h-y); ang -=30; } //获得现在的时间 Calendar now = new GregorianCalendar(); int nowh = now.get(Calendar.HOUR_OF_DAY); int nowm = now.get(Calendar.MINUTE); int nows = now.get(Calendar.SECOND); String st; if(nowh < 10)st = "0"+nowh; else st = ""+nowh; if(nowm<10)st += ":0"+nowm; else st += ":"+nowm; if(nows<10)st += ":0"+nows; else st += ":"+nows; //在窗体上显示时间 g.setColor(Color.pink); g.fillRect(L, T, 50, 28); g.setColor(Color.blue); g.drawString(st,L+2,T+26); //计算时间与度数的关系 ss = 90 - nows*6; mm = 90 - nowm*

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值