在线日历计算机,计算机日历代码

import java.awt.*;

import java.awt.event.*;

import java.util.*;

import javax.swing.*;

public class MyCalendar{

public static void main(String arg []){

new CalendarFace();

}

}

class CalendarFace extends JFrame{

private JFrame f;

private GregorianCalendar cal=new

GregorianCalendar(Locale.CHINESE); //主日历

private JPanel toppan,clockpan,daypan,capan,mainpan;

private JTextField yeartxt,monthtxt,daytxt;

private JLabel weeklab;

private JButton

yearup,yeardown,monthup,monthdown,dayup,daydown;

private JButton changedate_time,toplab;

private JToggleButton day[]=new JToggleButton[42];

private String timestring;

private int nowyear,nowmonth,nowday; //现在是xx年xx月xx日

private int[] lastday={0,31,28,31,30,31,30,31,31,30,31,30,31};

//1-12月的天数

public CalendarFace(){

Container con=getContentPane();

con.setLayout(new FlowLayout());

con.setBackground(Color.WHITE);

//初始化日期,获取今天的年月日 注:月份0-11之间,天数1-31之间

Calendar now=new GregorianCalendar();

nowyear=now.get(Calendar.YEAR);

nowmonth=now.get(Calendar.MONTH);

nowday=now.get(Calendar.DAY_OF_MONTH);

timestring=String.valueOf(nowyear+"年"+(nowmonth+1)+"月"+nowday+"日");

toplab=new JButton(timestring);

toplab.setBorder(null);

toplab.setBorderPainted(false);

toplab.setBackground(Color.WHITE);

toplab.setHorizontalAlignment(JButton.CENTER);

toplab.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));

//鼠标变成手型

toplab.addMouseListener(new MouseListener(){

public void mouseClicked(MouseEvent e) {}

public void mousePressed(MouseEvent e) {}

public void mouseReleased(MouseEvent e) {}

public void mouseEntered(MouseEvent e) {

toplab.setBorder(BorderFactory.createMatteBorder(0, 0, 1,

0,SystemColor.BLUE));

}

public void mouseExited(MouseEvent e) {

toplab.setBorder(BorderFactory.createMatteBorder(0, 0, 0,

0,SystemColor.BLUE));

}

});

toplab.setForeground(Color.BLUE); //设置字体颜色

toplab.setFont(new Font("宋体",Font.BOLD,18));

toplab.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

Calendar now=new GregorianCalendar();

nowyear=now.get(Calendar.YEAR);

nowmonth=now.get(Calendar.MONTH);

nowday=now.get(Calendar.DAY_OF_MONTH);

showDate();

showDays();

}

});

toppan=new JPanel();

toppan.setPreferredSize(new Dimension(200,40));

toppan.setBackground(Color.WHITE);

toppan.add(toplab);

//年份文本

yeartxt=new JTextField(4);

yeartxt.setHorizontalAlignment(JTextField.CENTER);

//文本内容居中

yeartxt.setText(nowyear+"年");

yeartxt.addKeyListener(new KeyAdapter() {

public void keyPressed(KeyEvent e) {

if(e.getKeyChar()==10){

String s;

if(yeartxt.getText().endsWith("年")){

s=yeartxt.getText().substring(0,yeartxt.getText().length()-1);

}else

s=yeartxt.getText();

nowyear=Integer.parseInt(s);

yeartxt.setText(nowyear+"年");

showDays();

}

}

});

//年份减少按钮

yeardown=new JButton("\u25C4");

yeardown.setBackground(Color.WHITE);

yeardown.setBorderPainted(false); //去掉按钮边框

yeardown.setBorder(null);

final int r=23;

yeardown.setPreferredSize(new Dimension(r-11, r));

yeardown.setSize(new Dimension(r, r));

yeardown.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

nowyear--;

showDate();

showDays();

}

});

//年份增加按钮

yearup=new JButton("\u25BA");

yearup.setBackground(Color.WHITE);

yearup.setBorderPainted(false); //去掉按钮边框

yearup.setBorder(null);

yearup.setPreferredSize(new Dimension(r-11, r));

yearup.setSize(new Dimension(r, r));

yearup.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

nowyear++;

showDate();

showDays();

}

});

//月份文本

monthtxt=new JTextField(3);

monthtxt.setHorizontalAlignment(JTextField.CENTER);

//文本内容居中

monthtxt.setText((nowmonth+1)+"月");

monthtxt.addKeyListener(new KeyAdapter() {

public void keyPressed(KeyEvent e) {

if(e.getKeyChar()==10){

String s;

if(monthtxt.getText().endsWith("月")){

s=monthtxt.getText().substring(0,monthtxt.getText().length()-1);

}else

s=monthtxt.getText();

int mindis=Integer.parseInt(s)-1;

if(mindis>=0&&mindis<12)

nowmonth=mindis;

monthtxt.setText((nowmonth+1)+"月");

showDays();

}

}

});

//月份减少按钮

monthdown=new JButton("\u25C4");

monthdown.setBackground(Color.WHITE);

monthdown.setBorderPainted(false); //去掉按钮边框

monthdown.setBorder(null);

monthdown.setPreferredSize(new Dimension(r-11, r));

monthdown.setSize(new Dimension(r, r));

monthdown.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

nowmonth--;

if(nowmonth==-1){

nowmonth=11;

nowyear--;

}

showDate();

showDays();

}

});

//月份增加按钮

monthup=new JButton("\u25BA");

monthup.setBackground(Color.WHITE);

monthup.setBorderPainted(false); //去掉按钮边框

monthup.setBorder(null);

monthup.setPreferredSize(new Dimension(r-11, r));

monthup.setSize(new Dimension(r, r));

monthup.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

nowmonth++;

if(nowmonth==12){

nowmonth=0;

nowyear++;

}

showDate();

showDays();

}

});

//天数文本

daytxt=new JTextField(3);//problem

daytxt.setHorizontalAlignment(JTextField.CENTER);

//文本内容居中

daytxt.setText(nowday+"日");

daytxt.addKeyListener(new KeyAdapter() {

public void keyPressed(KeyEvent e) {

if(e.getKeyChar()==10){

String s;

if(daytxt.getText().endsWith("日")){

s=daytxt.getText().substring(0,daytxt.getText().length()-1);

}else

s=daytxt.getText();

int mindis=Integer.parseInt(s);

int n=lastday[nowmonth+1];

if(cal.isLeapYear(nowyear)&&nowmonth==1)

n++;

if(mindis>0&&mindis<=n)

nowday=mindis;

daytxt.setText(nowday+"日");

showDays();

}

}

});

//天数减少按钮

daydown=new JButton("\u25C4");

daydown.setBackground(Color.WHITE);

daydown.setBorderPainted(false); //去掉按钮边框

daydown.setBorder(null);

daydown.setPreferredSize(new Dimension(r-11, r));

daydown.setSize(new Dimension(r, r));

daydown.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

nowday--;

if(nowday==0){

nowmonth--;

if(nowmonth==-1){

nowmonth=11;

nowyear--;

}

nowday=lastday[nowmonth+1];

if(cal.isLeapYear(nowyear)&&nowmonth==1)

nowday++;

}

showDate();

showDays();

}

});

//天数增加按钮

dayup=new JButton("\u25BA");

dayup.setBackground(Color.WHITE);

dayup.setBorderPainted(false); //去掉按钮边框

dayup.setBorder(null);

dayup.setPreferredSize(new Dimension(r-11, r));

dayup.setSize(new Dimension(r, r));

dayup.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

nowday++;

if(nowday>lastday[nowmonth+1]){

nowmonth++;

if(nowmonth==12){

nowmonth=0;

nowyear++;

}

nowday=1;

}

showDate();

showDays();

}

});

weeklab=new JLabel(" 日  一  二  三  四

六");

daypan=new JPanel();

daypan.setLayout(new GridLayout(6,7));

for(int i=0;i<42;i++){

final int x=30;

day[i]=new JToggleButton();

day[i].setBorder(null);

day[i].setBackground(SystemColor.WHITE);

day[i].setPreferredSize(new Dimension(x,x-6));

day[i].addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

nowday=Integer.parseInt(((JToggleButton)e.getSource()).getText());

showDate();

showDays();

}

});

daypan.add(day[i]);

}

showDays();

//capan是日历主体中间容器

capan=new JPanel();

capan.setLayout(new FlowLayout());

capan.setBackground(Color.WHITE);

capan.setBorder(null);

capan.setPreferredSize(new Dimension(280,200));

capan.add(yeardown);

capan.add(yeartxt);

capan.add(yearup);

capan.add(monthdown);

capan.add(monthtxt);

capan.add(monthup);

capan.add(daydown);

capan.add(daytxt);

capan.add(dayup);

capan.add(weeklab);

capan.add(daypan);

//clockpan是时钟中间容器

clockpan=new JPanel();

clockpan.setLayout(new BorderLayout());

clockpan.setBorder(null);

clockpan.setPreferredSize(new Dimension(160,200));

clockpan.add(new MyClock(true,timestring));

//mainpan是日历和时钟结合的中间容器

mainpan=new JPanel();

mainpan.setBackground(Color.WHITE);

mainpan.add(capan);

mainpan.add(clockpan);

//更改日期和时间

changedate_time=new JButton("更改日期和时间设置...");

changedate_time.setBorder(null);

changedate_time.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));

//鼠标变成手型

changedate_time.addMouseListener(new MouseListener(){

public void mouseClicked(MouseEvent e) {}

public void mousePressed(MouseEvent e) {}

public void mouseReleased(MouseEvent e) {}

public void mouseEntered(MouseEvent e) {

changedate_time.setBorder(BorderFactory.createMatteBorder(0,

0, 1, 0,SystemColor.BLUE));

}

public void mouseExited(MouseEvent e) {

changedate_time.setBorder(BorderFactory.createMatteBorder(0,

0, 0, 0,SystemColor.BLUE));

}

});

changedate_time.setForeground(Color.BLUE);

changedate_time.setFont(new Font("幼圆",Font.PLAIN,12));

changedate_time.setBorderPainted(false);

changedate_time.setBackground(Color.WHITE);

changedate_time.setHorizontalAlignment(JButton.CENTER);

changedate_time.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

new ChangeDate_Time(f,timestring);

}

});

con.add(toppan);

con.add(mainpan);

con.add(changedate_time,BorderLayout.SOUTH);

setSize(500,320);

setResizable(false);

setLocation(300,200);

setVisible(true);

setDefaultCloseOperation(JDialog.EXIT_ON_CLOSE);

}

//刷新日期

void showDate(){

yeartxt.setText(nowyear+"年");

monthtxt.setText((nowmonth+1)+"月");

daytxt.setText(nowday+"日");

}

//重画天数选择面板

void showDays(){

int i,d;

cal.set(nowyear, nowmonth,1);

int firstDayOfWeek=cal.get(Calendar.DAY_OF_WEEK);

int n=lastday[nowmonth+1];

if(cal.isLeapYear(nowyear)&&nowmonth==1)

n++;

for(i=0;i

day[i].setEnabled(false);

day[i].setSelected(false);

day[i].setText("");

}

for(d=1;d<=n;d++){

day[i].setText(Integer.toString(d));

day[i].setEnabled(true);

if(d==nowday)

day[i].setSelected(true);

else

day[i].setSelected(false);

i++;

}

for(;i<42;i++){

day[i].setEnabled(false);

day[i].setSelected(false);

day[i].setText("");

}

}

}

class MyClock extends JPanel implements Runnable{

private int R=80,x0=R,y0=R+15;

private int d,x,y;

private int hour,minute,second;

private double rad=Math.PI/180;

private boolean leap;

private String datestring;

public MyClock(boolean leap,String datestring){

this.leap=leap;

this.datestring=datestring;

Calendar now=new GregorianCalendar();

second = now.get(Calendar.SECOND) * 6;//获得秒转换成度数

minute = now.get(Calendar.MINUTE) * 6;//获得分钟

hour = (now.get(Calendar.HOUR_OF_DAY) - 12) * 30 +

now.get(Calendar.MINUTE) / 12 * 6;//获得小时

Thread t = new Thread(this);

t.start();

}

public void paintComponent(Graphics g){

this.setBackground(Color.WHITE);

super.paintComponent(g);

g.setColor(Color.BLACK);

g.fillOval(x0-R, y0-R, 2*R, 2*R);

g.setColor(Color.WHITE);

g.fillOval(x0-R+3, y0-R+3, 2*R-6, 2*R-6);

g.setColor(Color.BLACK);

g.fillOval(x0-3, y0-3,6,6);

g.setColor(Color.DARK_GRAY);

//画点

d=0;

for(int i=0;i<60;i++){

x=(int)((R-8)*Math.sin(rad*d));

y=(int)((R-8)*Math.cos(rad*d));

int x1=(int)((R-13)*Math.sin(rad*d));

int y1=(int)((R-13)*Math.cos(rad*d));

g.drawString(".",x0+x-1,y0-y+1);

if(d0==0&&d�!=0)

g.drawLine(x0+x-1,y0-y+1,x0+x1-1,y0-y1+1);

d+=6;

}

//数字1-12

g.setColor(Color.BLACK);

d=30;

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

x=(int)((R-21)*Math.sin(rad*d));

y=(int)((R-21)*Math.cos(rad*d));

g.drawString(String.valueOf(i),x0+x-3,y0-y+5);

d+=30;

}

//数字3,6,9,12小矩形

g.setColor(Color.DARK_GRAY);

g.fillRect(x0-1,y0-R+8,2,8);

g.fillRect(x0-1,y0+R-15,2,8);

g.fillRect(x0-R+8,y0-1,8,2);

g.fillRect(x0+R-15,y0-1,8,2);

//秒针

g.setColor(Color.BLACK);

x= (int)((R-7) * Math.sin(rad * second));

y= (int)((R-7) * Math.cos(rad * second));

g.drawLine(x0-(int)(15*Math.sin(rad *

second)),y0+(int)(15*Math.cos(rad * second)), x0+x, y0-y);

//分针

g.setColor(Color.BLACK);

x= (int)((R-27) * Math.sin(rad * minute));

y= (int)((R-27) * Math.cos(rad * minute));

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

//时针

g.setColor(Color.BLACK);

x= (int)((R-47) * Math.sin(rad * hour));

y= (int)((R-47) * Math.cos(rad * hour));

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

//显示时间

g.setColor(Color.BLACK);

g.setFont(new Font("宋体",Font.PLAIN,15));

Calendar now1 = new GregorianCalendar();

String nowhour,noeminute,nowsecond;

nowhour=String.valueOf(now1.get(Calendar.HOUR_OF_DAY)>9?now1.get(Calendar.HOUR_OF_DAY):"0"+now1.get(Calendar.HOUR_OF_DAY));

noeminute=String.valueOf(now1.get(Calendar.MINUTE)>9?now1.get(Calendar.MINUTE):"0"+now1.get(Calendar.MINUTE));

nowsecond=String.valueOf(now1.get(Calendar.SECOND)>9?now1.get(Calendar.SECOND):"0"+now1.get(Calendar.SECOND));

if(leap){

g.drawString(nowhour+": "+noeminute+": "+nowsecond,40,

13);

int dayofweek=now1.get(Calendar.DAY_OF_WEEK)-1;

String weekstring = null;

switch(dayofweek){

case 0:weekstring="星期日";break;

case 1:weekstring="星期一";break;

case 2:weekstring="星期二";break;

case 3:weekstring="星期三";break;

case 4:weekstring="星期四";break;

case 5:weekstring="星期五";break;

case 6:weekstring="星期六";break;

}

g.drawString(weekstring,56,195);

}else{

g.setFont(new Font("宋体",Font.PLAIN,15));

g.drawString("日期:",180,50);

g.drawString(datestring,180,70);

g.drawString("时间:",180,130);

g.drawString(nowhour+":"+noeminute+":"+nowsecond,180,

150);

}

}

public void run() {

while (true) {

try {

Thread.sleep(1000);

}catch(Exception ex){}

second+=6;

if (second>=360){

second=0;

minute+=6;

if(minute==72||minute==144||minute==216||minute==288){

hour+=6;

}

if(minute>=360){

minute=0;

hour+=6;

}

if(hour>=360){

hour=0;

}

}

this.repaint();

}

}

}

class ChangeDate_Time extends JDialog{

private JButton

changedate_time,changetimezone,ok,cancel,application;

private JPanel

timepan,date_timepan,timezonepan,changetimezonepan,xialingpan,downpan;

private JLabel timezonelab,timezone,xialing;

public ChangeDate_Time(JFrame f,String datestring){

super(f,"日期和时间",true);

Container con=getContentPane();

con.setLayout(new FlowLayout());

con.setBackground(Color.WHITE);

timepan=new JPanel();

timepan.setLayout(new BorderLayout());

timepan.setBorder(null);

timepan.setPreferredSize(new Dimension(410,200));

timepan.add(new MyClock(false,datestring));

con.add(timepan);

changedate_time=new JButton("更改日期和时间(D)");

changedate_time.setFont(new Font("宋体",Font.PLAIN,15));

changedate_time.setBorder(null);

changedate_time.setPreferredSize(new Dimension(150,20));

date_timepan=new JPanel();

date_timepan.setBackground(Color.WHITE);

date_timepan.setPreferredSize(new Dimension(410,40));

date_timepan.setLayout(new

FlowLayout(FlowLayout.RIGHT));

date_timepan.add(changedate_time);

con.add(date_timepan);

timezonelab=new JLabel("时区  ----------------------------------------");

timezonelab.setFont(new Font("宋体",Font.PLAIN,15));

timezone=new JLabel("(UTC+08:00)北京,重庆,香港特别行政区,乌鲁木齐");

timezone.setFont(new Font("宋体",Font.PLAIN,15));

timezonepan=new JPanel();

timezonepan.setBackground(Color.WHITE);

timezonepan.setPreferredSize(new Dimension(410,60));

timezonepan.setLayout(new FlowLayout(FlowLayout.LEFT));

timezonepan.add(timezonelab);

timezonepan.add(timezone);

con.add(timezonepan);

changetimezone=new JButton("更改时区(Z)");

changetimezone.setFont(new Font("宋体",Font.PLAIN,15));

changetimezone.setBorder(null);

changetimezone.setPreferredSize(new Dimension(150,20));

changetimezonepan=new JPanel();

changetimezonepan.setBackground(Color.WHITE);

changetimezonepan.setPreferredSize(new

Dimension(410,40));

changetimezonepan.setLayout(new

FlowLayout(FlowLayout.RIGHT));

changetimezonepan.add(changetimezone);

con.add(changetimezonepan);

xialing=new JLabel("此时区未实行夏令时。");

xialing.setFont(new Font("宋体",Font.PLAIN,15));

xialing.setBorder(null);

xialing.setPreferredSize(new Dimension(150,30));

xialingpan=new JPanel();

xialingpan.setBackground(Color.WHITE);

xialingpan.setPreferredSize(new Dimension(410,40));

xialingpan.setLayout(new FlowLayout(FlowLayout.LEFT));

xialingpan.add(xialing);

con.add(xialingpan);

ok=new JButton("确定");

ok.setFont(new Font("宋体",Font.PLAIN,15));

ok.setBorder(null);

ok.setPreferredSize(new Dimension(80,20));

ok.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

dispose();

}

});

cancel =new JButton("取消");

cancel.setFont(new Font("宋体",Font.PLAIN,15));

cancel.setBorder(null);

cancel.setPreferredSize(new Dimension(80,20));

cancel.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

dispose();

}

});

application=new JButton("应用(A)");

application.setFont(new Font("宋体",Font.PLAIN,15));

application.setBorder(null);

application.setPreferredSize(new Dimension(80,20));

application.setEnabled(false);

downpan=new JPanel();

downpan.setBackground(Color.WHITE);

downpan.setPreferredSize(new Dimension(410,40));

downpan.setLayout(new FlowLayout(FlowLayout.RIGHT));

downpan.add(ok);

downpan.add(cancel);

downpan.add(application);

con.add(downpan);

setSize(450,480);

setResizable(false);

setLocation(300,200);

setVisible(true);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值