程序:万年历+时钟小程序实现

java知识点有:java常用内库与工具(Date类、Calendar类等)、异常(try.....catch)、线程、AWT图形用户界面等基础知识点。

分享者:传智播客

获取更多资源:3128242702(qq)

1.[代码][Java]代码

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import java.text.*;

import java.util.*;

//创建窗口和年历

class MainFrame extends JFrame{

JPanel panel=new JPanel(new BorderLayout());//BorderLayout为边界布局

JPanel panel1=new JPanel();

JPanel panel2=new JPanel(new GridLayout(7,7));//GridLayout为网格布局

JPanel panel3=new JPanel();

JLabel []label=new JLabel[49];

JLabel y_label=new JLabel("年份");

JLabel m_label=new JLabel("月份");

JComboBox com1=new JComboBox();

JComboBox com2=new JComboBox();

JButton button=new JButton("查看");

int re_year,re_month;

int x_size,y_size;

String year_num;

Calendar now=Calendar.getInstance(); //实例化Calendar

MainFrame(){

super("万年历-Jackbase");

setSize(300,350);

x_size=(int)(Toolkit.getDefaultToolkit().getScreenSize().getWidth());

y_size=(int)(Toolkit.getDefaultToolkit().getScreenSize().getHeight());

setLocation((x_size-300)/2,(y_size-350)/2);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

panel1.add(y_label);

panel1.add(com1);

panel1.add(m_label);

panel1.add(com2);

panel1.add(button);

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

label=new JLabel("",JLabel.CENTER);//将显示的字符设置为居中

panel2.add(label);

}

panel3.add(new Clock(this));

panel.add(panel1,BorderLayout.NORTH);

panel.add(panel2,BorderLayout.CENTER);

panel.add(panel3,BorderLayout.SOUTH);

panel.setBackground(Color.white);

panel1.setBackground(Color.white);

panel2.setBackground(Color.white);

panel3.setBackground(Color.white);

Init();

button.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

int c_year,c_month,c_week;

c_year=Integer.parseInt(com1.getSelectedItem().toString()); //得到当前所选年份

c_month=Integer.parseInt(com2.getSelectedItem().toString())-1; //得到当前月份,并减1,计算机中的月为0-11

c_week=use(c_year,c_month); //调用函数use,得到星期几

Resetday(c_week,c_year,c_month); //调用函数Resetday

}});

setContentPane(panel);

setVisible(true);

setResizable(false);

}

public void Init(){

int year,month_num,first_day_num;

String log[]={"日","一","二","三","四","五","六"};

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

label.setText(log);

}

for(int i=0;i<49;i=i+7){

label.setForeground(Color.red); //将星期日的日期设置为红色

}

for(int i=6;i<49;i=i+7){

label.setForeground(Color.red);//将星期六的日期也设置为红色

}

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

com1.addItem(""+i);

}

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

com2.addItem(""+i);

}

month_num=(int)(now.get(Calendar.MONTH)); //得到当前时间的月份

year=(int)(now.get(Calendar.YEAR)); //得到当前时间的年份

com1.setSelectedIndex(year-1); //设置下拉列表显示为当前年

com2.setSelectedIndex(month_num); //设置下拉列表显示为当前月

first_day_num=use(year,month_num);

Resetday(first_day_num,year,month_num);

}

public int use(int reyear,int remonth){

int week_num;

now.set(reyear,remonth,1); //设置时间为所要查询的年月的第一天

week_num= (int)(now.get(Calendar.DAY_OF_WEEK));//得到第一天的星期

return week_num;

}

public void Resetday(int week_log,int year_log,int month_log){

int month_score_log; //判断是否是闰年的标记

int month_day_score; //存储月份的天数

int count;

month_score_log=0;

month_day_score=0;

count=1;

if(year_log%4==0&&year_log%100!=0||year_log%400==0){//判断是否为闰年

month_score_log=1;

}

month_log=month_log+1; //将传来的月份数加1

switch(month_log){

case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12:

month_day_score=31;

break;

case 4:

case 6:

case 9:

case 11:

month_day_score=30;

break;

case 2:

if(month_score_log==1){

month_day_score=29;

}

else{

month_day_score=28;

}

break;

}

for(int i=7;i<49;i++){ //初始化标签

label.setText("");

}

week_log=week_log+6; //将星期数加6,使显示正确

month_day_score=month_day_score+week_log;

for(int i=week_log;i

label.setText(count+"");

}

}

}

//创建时钟

class Clock extends Canvas implements Runnable{

MainFrame mf;

Thread t;

String time;

Clock(MainFrame mf){

this.mf=mf;

setSize(400,40);

setBackground(Color.white);

t=new Thread(this); //实例化线程

t.start(); //调用线程

}

public void run(){

while(true){

try{

t.sleep(1000); //休眠1秒钟

}catch(InterruptedException e){

System.out.println("异常");

}

this.repaint(100);

}

}

public void paint(Graphics g){

Font f=new Font("宋体",Font.BOLD,16);

SimpleDateFormat SDF=new SimpleDateFormat("yyyy'年'MM'月'dd'日'HH:mm:ss");//格式化时间显示类型

Calendar now=Calendar.getInstance();

time=SDF.format(now.getTime()); //得到当前日期和时间

g.setFont(f);

g.setColor(Color.red);

g.drawString(time,100,25);

}

}

public class Wnl{

public static void main(String [] args){

JFrame.setDefaultLookAndFeelDecorated(true);

MainFrame start=new MainFrame();

}

}

java做万年历,Java做的万年历相关推荐

  1. 万年历java课程设计报告_java万年历课程设计报告2010

    一.课程设计任务及要求 (1)设计任务: 编写一个Java 万年历程序,实现日期和星期的查询. (2)设计要求: 1.主界面采用边界布局,北面是一个设置年月的控制面板,中间是日历绘制区: 2.单击&q ...

  2. java和python的web自动化有什么区别-python和java哪个更适合做自动化?

    真的很纠结,开发团队用java语言,本来想着跟随开发团队,但是发现python写测试脚本会轻松一点,在网上的找到资料,供参考. python:易于学习,语法简洁 不可否认的是,Python相对于其他语 ...

  3. java和python的web自动化有什么区别-Python和Java哪个更适合做自动化测试?

    Python:易于学习,语法简洁 不可否认的是,Python相对于其他语言来说,要容易的多.因为Python语言的简单明了,很多外行人也能读懂它的代码.Python语言不需要拥有很丰富的词汇,简单明了 ...

  4. python编程书籍1020python编程书籍_代写INFT 1020作业、Database作业代做、Java课程作业代写、c++,Python编程作业代做...

    代写INFT 1020作业.Database作业代做.Java课程作业代写.c++,Python编程作业代做 日期:2020-04-25 10:27 INFT 1020 Database Fundam ...

  5. java日历记事本ppt_JAVA做的日历记事本

    展开全部 import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; class TextE ...

  6. Android Annotation-让你的代码更加优雅(二)做一个Java诗人(JavaPoet)

    上篇回顾 上一篇我们按照思维导图,介绍了注解的基础知识,如何定义一个注解,提示性注解,运行时注解的写法和用法.没有看过第一篇,又对注解知识相对陌生的同学,建议先食用第一篇.本篇将重点介绍编译期注解,自 ...

  7. java对xml文件做增删改查------摘录

    java对xml文件做增删改查 package com.wss; import java.io.File; import java.util.ArrayList; import java.util.L ...

  8. php转java知乎_做了三年多的php,在上一家公司转java一年多,如何找工作

    尝试了几家java的面试,面试过程所有的问题都解答得很顺畅,等结果出来之后却被告知因为年限不够,不想聘用,所以只能继续找php的岗位了吗? "年限不够"多半不是不想聘用的真实理由. ...

  9. 在java中使用JMH(Java Microbenchmark Harness)做性能测试

    文章目录 使用JMH做性能测试 BenchmarkMode Fork和Warmup State和Scope 在java中使用JMH(Java Microbenchmark Harness)做性能测试 ...

  10. java中布尔值做比较_Java中的三态布尔值

    java中布尔值做比较 我不时地错过Java中SQL的三值BOOLEAN语义. 在SQL中,我们有: TRUE FALSE UNKNOWN (也称为NULL ) 时不时地,我希望自己也可以用Java表 ...

最新文章

  1. 通过VB结构数组输入数据VC编写DLL
  2. Caffe学习系列(8):solver优化方法
  3. webapck将css 打包后单独提取到一个css文件中
  4. 为什么有的SAP CRM系统的产品搜索页面上会显示小红叉
  5. 【整理】Spring 常用注解!千万不要错过!
  6. java获取vm运行参数_如何获取在Java中运行Java VM的版本?
  7. php 根号2计算过程,根号2以及π的计算--关于无理数的畅想
  8. 一文讲清数据治理、数据管理、数据资产管理区别,数据专家必看
  9. Java的native方法
  10. Ajax(二)-XMLHttpRequest(核心)对象的属性和方法
  11. jdbc数据库配置mysql数据库_JDBC连接MySQL数据库(一)——数据库的基本连接
  12. 射频识别技术漫谈(9)——动物标签HDX
  13. Well-ordered String
  14. 考研数学要背诵的知识点
  15. Nginx+Tomcat实现负载均衡、动静分离集群部署
  16. Unity5.联机笔记
  17. android新闻客户端(有源码)
  18. Computer Systerm Architecture by M.Morris Mano学习笔记1:1.1-1.4
  19. python用递归方式实现最大公约数_Python - 最大公约数算法
  20. [转帖]保罗·艾伦的故事

热门文章

  1. 百度AI人脸识别与检测五:学生人脸识别打卡签到系统之百度AI人脸识别
  2. 公交系统如何利用智能调度降低运营费用
  3. VMware Workstation 14.1.1 精简特别版
  4. 华为手机屏幕锁屏时间设置_华为手机锁屏时间怎么设置?
  5. 大数据采集与处理期末复习题
  6. 精心梳理二十二道常见SSM面试题(带答案)
  7. Linux基础学习笔记整理——第二章 管理文件和目录
  8. 面经-hangzhou
  9. AUTOCAD——添加自定义填充图案
  10. python变量名长度有限制吗_url长度有限制么?