用java编写日历系统(日历的设计与实现Java课程设计)

今天给各位分享用java编写日历系统的知识,其中也会对日历的设计与实现Java课程设计进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

1、怎么用java写日历2、Java编写程序,输入年份,输出本年度各月份日历3、java万年历程序如何编写?4、用java图形用户界面实现: 编写一个日历程序,能实现显示日历等简单功能。5、JAVA编写日历

怎么用java写日历

以下是两个类,请楼主分别存成两个java文件:

其中

MainFrame.java是显示日历程序,Clock.java是日历计算程序。编译后运行MainFrame这个类即可。

1.MainFrame.java

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.GridLayout;

import java.awt.Toolkit;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.sql.Date;

import java.util.Calendar;

import javax.swing.JComboBox;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

public class MainFrame extends JFrame {

/** *//**

*

*/

private static final long serialVersionUID = 1L;

JPanel panel = new JPanel(new BorderLayout());

JPanel panel1 = new JPanel();

JPanel panel2 = new JPanel(new GridLayout(7, 7));

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();

int re_year, re_month;

int x_size, y_size;

String year_num;

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

MainFrame() {

super(“万年历”);

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);

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

label[i] = new JLabel(“”, JLabel.CENTER);// 将显示的字符设置为居中

panel2.add(label[i]);

}

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();

com1.addActionListener(new ClockAction());

com2.addActionListener(new ClockAction());

setContentPane(panel);

setVisible(true);

setResizable(false);

}

class ClockAction implements ActionListener {

public void actionPerformed(ActionEvent arg0) {

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

}

}

public void Init() {

int year, month_num, first_day_num;

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

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

label[i].setText(log[i]);

}

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

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

}

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

label[i].setForeground(Color.green);// 将星期六的日期设置为绿色

}

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;

}

@SuppressWarnings(“deprecation”)

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

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

int count;

month_day_score = 0;

count = 1;

Date date = new Date(year_log, month_log + 1, 1); // now

Calendar cal = Calendar.getInstance();

cal.setTime(date);

cal.add(Calendar.MONTH, -1); // 前个月

month_day_score = cal.getActualMaximum(Calendar.DAY_OF_MONTH);// 最后一天

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

label[i].setText(“”);

}

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

month_day_score = month_day_score + week_log;

for (int i = week_log; i month_day_score; i++, count++) {

label[i].setText(count + “”);

}

}

public static void main(String[] args) {

JFrame.setDefaultLookAndFeelDecorated(true);

new MainFrame();

}

}

2.Clock.java

—–

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.GridLayout;

import java.awt.Toolkit;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.sql.Date;

import java.util.Calendar;

import javax.swing.JComboBox;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

//显示时间的类:Clock

/** *//**

* Clock.java

* Summary 数字时间显示

* Created on

* @author

* remark

*/

import java.awt.Canvas;

import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics;

import java.text.SimpleDateFormat;

import java.util.Calendar;

class Clock extends Canvas implements Runnable{

/** *//**

*

*/

private static final long serialVersionUID = 3660124045489727166L;

MainFrame mf;

Thread t;

String time;

public Clock(MainFrame mf){

this.mf=mf;

setSize(280,40);

setBackground(Color.white);

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

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

}

public void run(){

while(true){

try{

Thread.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.orange);

g.drawString(time,45,25);

}

}

Java编写程序,输入年份,输出本年度各月份日历

写了个简明的,

import java.util.Calendar;

import java.util.Scanner;

public class Test {

static public void main(String 参数[]){

Calendar c = Calendar.getInstance();

Scanner sc = new Scanner(System.in);

System.out.println(“请输入年份:”);

int year= sc.nextInt();

c.set(Calendar.YEAR, year);

c.set(Calendar.MONTH, Calendar.JANUARY);

c.set(Calendar.DAY_OF_MONTH, 1);

while(c.get(Calendar.YEAR)==year){

int wday=c.get(Calendar.DAY_OF_WEEK);

int mday=c.get(Calendar.DAY_OF_MONTH);

if(mday==1){

System.out.println(“\n日\t一\t二\t三\t四\t五\t六\t第”+(c.get(Calendar.MONTH)+1)+”月”);

System.out.println(“—————————————————“);

for(int i=0;iwday-1;i++) System.out.print(” \t”);

}

System.out.print(mday+”\t”);

if(wday==7) System.out.println();

c.add(Calendar.DAY_OF_YEAR, 1);

}

}

}

=======

请输入年份:

2012

日一二三四五六第1月

—————————————————

1234567

891011121314

15161718192021

22232425262728

293031

日一二三四五六第2月

—————————————————

1234

567891011

12131415161718

19202122232425

26272829

日一二三四五六第3月

—————————————————

123

45678910

11121314151617

18192021222324

25262728293031

日一二三四五六第4月

—————————————————

1234567

891011121314

15161718192021

22232425262728

2930

日一二三四五六第5月

—————————————————

12345

6789101112

13141516171819

20212223242526

2728293031

日一二三四五六第6月

—————————————————

12

3456789

10111213141516

17181920212223

24252627282930

日一二三四五六第7月

—————————————————

1234567

891011121314

15161718192021

22232425262728

293031

日一二三四五六第8月

—————————————————

1234

567891011

12131415161718

19202122232425

262728293031

日一二三四五六第9月

—————————————————

1

2345678

9101112131415

16171819202122

23242526272829

30

日一二三四五六第10月

—————————————————

123456

78910111213

14151617181920

21222324252627

28293031

日一二三四五六第11月

—————————————————

123

45678910

11121314151617

18192021222324

252627282930

日一二三四五六第12月

—————————————————

1

2345678

9101112131415

16171819202122

23242526272829

3031

java万年历程序如何编写?

package calendar;

import java.applet.Applet;

import java.awt.*;

import java.util.*;

public class CalendarApplet extends Applet{

private static final long serialVersionUID = 1L;

static final int TOP = 70; //顶端距离

static final int CELLWIDTH=50,CELLHEIGHT = 30; //单元格尺寸

static final int MARGIN = 3; //边界距离

static final int FEBRUARY = 1;

TextField tfYear = new TextField(“2004”, 5); //显示年份的文本域

Choice monthChoice = new Choice(); //月份选择下拉框

Button btUpdate = new Button(“更新”); //更新按钮

GregorianCalendar calendar=new GregorianCalendar(); //日历对象

Font smallFont = new Font(“TimesRoman”, Font.PLAIN, 15); //显示小字体

Font bigFont = new Font(“TimesRoman”, Font.BOLD, 50); //显示大字体

String days[] = {“星期日”, “星期一”, “星期二”, “星期三”,”星期四”, “星期五”, “星期六”};

String months[] = {“一月”, “二月”, “三月”, “四月”,”五月”, “六月”, “七月”, “八月”, “九月”,”十月”, “十一月”, “十二月”};

int daysInMonth[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; //每个月的天数

int searchMonth,searchYear; //查询的年份及月份

public void init(){

setBackground(Color.white); //设置背景颜色

searchMonth = calendar.get(Calendar.MONTH); //得到系统年份

searchYear = calendar.get(Calendar.YEAR);//得到系统月份

add(new Label(” 年:”)); //增加组件到Applet

tfYear.setText(String.valueOf(searchYear)); //设置文本域文字

add(tfYear);

add(new Label(” 月:”));

setSize(360,230);

monthChoice.setFont(smallFont); //设置月份选择下拉框的显示字体

for (int i = 0; i 12; i++) {

monthChoice.add(months[i]); //增加下拉框选项

}

monthChoice.select(searchMonth); //设置下拉框当前选择项

add(monthChoice);

add(btUpdate);

int componentCount=this.getComponentCount(); //得到Applet中的组件数量

for (int i=0;icomponentCount;i++){

getComponent(i).setFont(smallFont); //设置所有组件的显示字体

}

}

public void paint(Graphics g){

FontMetrics fontMetric; //显示字体的FontMetrics对象

int fontAscent;

int dayPos;

int totalWidth, totalHeight; //总的宽度,高度

int numRows; //行数

int xNum, yNum; //水平和垂直方向单元格数量

int numDays;

String dayStr; //显示天数字符串

g.setColor(Color.lightGray); //设置当前颜色

g.setFont(bigFont); //设置当前使用字体

g.drawString(searchYear+”年”,60,TOP+70); //绘制字符串

g.drawString((searchMonth+1)+”月”,200,TOP+130);

g.setColor(Color.black);

g.setFont(smallFont);

fontMetric = g.getFontMetrics(); //获取变量初值

fontAscent = fontMetric.getAscent();

dayPos = TOP + fontAscent / 2;

totalWidth = 7 * CELLWIDTH; //得到总的表格宽度

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

g.drawString(days[i], (CELLWIDTH-fontMetric.stringWidth(days[i]))/2 + i*CELLWIDTH,dayPos-20); //绘制表格标题栏

}

numRows = getNumberRows(searchYear, searchMonth); //计算需要的行的数量

totalHeight = numRows * CELLHEIGHT; //得到总的表格高度

for (int i = 0; i = totalWidth; i += CELLWIDTH) {

g.drawLine(i, TOP , i, TOP+ totalHeight); //绘制表格线

}

for (int i = 0, j = TOP ; i = numRows; i++, j += CELLHEIGHT) {

g.drawLine(0, j, totalWidth, j); //绘制表格线

}

xNum = (getFirstDayOfMonth(searchYear, searchMonth) + 1) * CELLWIDTH – MARGIN;

yNum = TOP + MARGIN + fontAscent;

numDays = daysInMonth[searchMonth] + ((calendar.isLeapYear(searchYear) (searchMonth == FEBRUARY)) ? 1 : 0);

for (int day = 1; day = numDays; day++) {

dayStr = Integer.toString(day);

g.drawString(dayStr, xNum – fontMetric.stringWidth(dayStr), yNum); //绘制字符串

xNum += CELLWIDTH;

if (xNum totalWidth) {

xNum = CELLWIDTH – MARGIN;

yNum += CELLHEIGHT;

}

}

}

public boolean action(Event e, Object o){

int searchYearInt;

if (e.target==btUpdate){

searchMonth = monthChoice.getSelectedIndex(); //得到查询月份

searchYearInt = Integer.parseInt(tfYear.getText(), 10); //得到查询年份

if (searchYearInt 1581) {

searchYear = searchYearInt;

}

repaint(); //重绘屏幕

return true;

}

return false;

}

private int getNumberRows(int year, int month) { //得到行数量

int firstDay;

int numCells;

if (year 1582) { //年份小于1582年,则返回-1

return (-1);

}

if ((month 0) || (month 11)) {

return (-1);

}

firstDay = getFirstDayOfMonth(year, month); //计算月份的第一天

if ((month == FEBRUARY) (firstDay == 0) !calendar.isLeapYear(year)) {

return 4;

}

numCells = firstDay + daysInMonth[month];

if ((month == FEBRUARY) (calendar.isLeapYear(year))) {

numCells++;

}

return ((numCells = 35) ? 5 : 6); //返回行数

}

private int getFirstDayOfMonth(int year, int month) { //得到每月的第一天

int firstDay;

int i;

if (year 1582) { //年份小于1582年,返回-1

return (-1);

}

if ((month 0) || (month 11)) { //月份数错误,返回-1

return (-1);

}

firstDay = getFirstDayOfYear(year);//得到每年的第一天

for (i = 0; i month; i++) {

firstDay += daysInMonth[i]; //计算每月的第一天

}

if ((month FEBRUARY) calendar.isLeapYear(year)) {

firstDay++;

}

return (firstDay % 7);

}

private int getFirstDayOfYear(int year){ //计算每年的第一天

int leapYears;

int hundreds;

int fourHundreds;

int first;

if (year 1582) { //如果年份小于1582年

return (-1); //返回-1

}

leapYears = (year – 1581) / 4;

hundreds = (year – 1501) / 100;

leapYears -= hundreds;

fourHundreds = (year – 1201) / 400;

leapYears += fourHundreds;

first=5 + (year – 1582) + leapYears % 7; //得到每年第一天

return first;

}

}

/*

* DateFormat dateFormat=new SimpleDateFormat(“yyyy-MM-dd hh:mm:ss”);

* dateFormat.format(new Date());//1987-02-17 21:02:01

*/

我自己弄的,你参考下

用java编写日历系统(日历的设计与实现Java课程设计)

用java图形用户界面实现: 编写一个日历程序,能实现显示日历等简单功能。

import javax.swing.JOptionPane;

public class NewClass{

public static void main(String[] args){

int year,month;

Calender cal=new Calender(2008,10);

cal.showCalender();

year=Integer.parseInt(JOptionPane.showInputDialog(“Year:”));

month=Integer.parseInt(JOptionPane.showInputDialog(“Month:”));

cal.setYear(year);

cal.setMonth(month);

cal.showCalender();

}

}

class Calender{

private int year,month;

public Calender(){

year=0;

month=1;

}

public Calender(int year){

this.year=year;

month=1;

}

public Calender(int year,int month){

this.year=year;

if(month12)

this.month=month%12;

else

this.month=month;

}

public void setYear(int year){

this.year=year;

}

public void setMonth(int month){

if(month12)

this.month=month%12;

else

this.month=month;

}

private int dayOfMonth(){

int days=0;

switch(month){

case 1:days=31;break;

case 2:{

if(((year%4==0)(year%100!=0))||(year%400==0))

days=29;

else

days=28;

break;

}

case 3:days=31;break;

case 4:days=30;break;

case 5:days=31;break;

case 6:days=30;break;

case 7:days=31;break;

case 8:days=31;break;

case 9:days=30;break;

case 10:days=31;break;

case 11:days=30;break;

case 12:days=31;break;

default:

days=0;

}

return days;

}

private int dayOfWeek(){

int Y=year;

int M=month;

int D=1;

int A;

A = Y0?(5+(Y+1)+(Y-1)/4-(Y-1)/100+(Y-1)/400)%7:(5+Y+Y/4-Y/100+Y/400)%7;

A = M2?(A+2*(M+1)+3*(M+1)/5)%7:(A+2*(M+2)+3*(M+2)/5)%7;

if (((Y%4 == 0 Y%100 != 0)|| Y%400 == 0) M2) A =(A+1)%7;

A=(A+D)%7;

return A;

}

public void showCalender(){

String str=new String();

str=” “;

str+=year+”年”+month+”月”;

str+=”\n\n”;

str+=”日 一 二 三 四 五 六\n”;

int week=this.dayOfWeek();

for(int i=0,j=1;i7;i++){

if(iweek)

str+=” “;

else{

str+=” “+j+” “;

j++;

}

}

str+=”\n”;

end:

for(int i=7-week+1;i=this.dayOfMonth();){

for(int j=0;j7;j++){

if(i10)

str+=” “+i+” “;

else

str+=i+” “;

i++;

if(ithis.dayOfMonth())

break end;

}

str+=”\n”;

}

JOptionPane.showMessageDialog(null,str);

}

}

JAVA编写日历

SWING和线程的技术。。至于日期类,估计你应该知道吧,如果不知道赶紧查API吧。你可以百度一下,想飞社区,在资源里 JAVA版日期控件。说明文档+源码都有,你可以参考一下。最终成型如下图

关于用java编写日历系统和日历的设计与实现Java课程设计的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年4月2日 20:58:57
下一篇 2024年4月2日 21:09:19

相关推荐

  • linux系统与gpt的关系的简单介绍

    linux下查看分区是不是gpt 看分区会报错,比如:WARNING: GPT (GUID Partition Table) detected on /dev/sda! The util fdisk doesnt support GPT. Use GNU Parted.所以这个sda就是gpt的。 选择“管理”;在“磁盘管理”中,右键“磁盘0”,在弹出的右键…

    2024年5月23日
    5400
  • 硬盘安装linux,硬盘安装win7系统教程

    hp288g8安装linux 好用。hpgen8安装Linux可以使cpu占用程度降低,减少卡顿。hpgen8安装Linux可以降低cpu温度,减少散热的压力。hpgen8安装Linux可以使功能更加便捷,方便新手操作。 在安装系统前,你要备份好资料和系统。Linux系统能装的软件和游戏比较少,要装,都是通过wine安装的。 首先开机看到下图界面按下F10,…

    2024年5月23日
    4300
  • java语言编写评分系统,java语言编写评分系统有哪些

    如何制作投票评分系统 搜索互动酷,进入网站后点击“开始制作”-“制作投票”按钮。或者在顶部找到“模版中心”并点击,点击“投票”类目,选择合适的投票模板进入制作。 打开微信,搜索小程序人人投票评分小程序。点击发起活动。选择需要征集的类型。设置活动名称、活动时间、奖品、封面等。点击创建活动,即完成活动创建,活动保存于我管理的里。 前一个可以用JQ+CSS实现。提…

    2024年5月23日
    4400
  • linuxttl是什么系统的简单介绍

    求解:如何通过TTL存活时间来判断是什么操作系统? 首先要说明的一点是,以前可以用TTL的值判断一个操作系统,但是现在,可以通过注册表来修改TTL的值的,所以这个方法判断的不一定准确,基本没什么大用了。 TTL=52在互联网环境下直接判断操作系统是没有准确依据的。TTL是生存时间的意思,就是说这个ping的数据包能在网络上存在多少时间。 TTL,表面意思为包…

    2024年5月23日
    4200
  • java日历添加事件,java实现简单的日历思路

    关于java做日历的问题 for(int i=1;i-days;i++){ 这一行,i-days,一定是FALSE,输出日期的这一循环不会执行。 两处判断闰年的地方写错了,应该是用变量i,而不是用year,这样你每年都是当成闰年处理的。 差不多实现了关于1号的星期,我给你点提示:当你设置了一个calendar的年月日时候 calendar.set(year,…

    2024年5月23日
    4600
  • 什么是linux操作系统,linux操作系统属于什么系统

    linux是什么操作系统? Linux是一套免费使用和自由传播的类Unix操作系统,是一个多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议,支持32位和64位硬件。 Linux 是一种自由、开放源代码的类 Unix 操作系统。与 Windows 等商业操作系统相比,Linux 有很多优点,例如稳定性高、安全性…

    2024年5月23日
    4300
  • linuxarm模拟器,linux系统在线模拟器

    linux下ARM平台编译编写的完成程序如何在windows环境下运行? 先确保你的c程序没有调用win下专有的api,比如win32api或.net等,如果有,就需要另写接口层。最好能只调用posix库或跨平台的库,或完全原创的算法库。c程序满足和win专有接口能脱离直接关系,就能在linux下编译。 要在Windows上建立arm-linux开发环境,您…

    2024年5月23日
    3900
  • linux系统下php的安装,linux 安装 php

    Linux如何安装配置PHP+Nginx 1、nginx,php,php-fpm 比如说如果是centos的话:yum install nginx php php-fpm可能软件包名有差别,这个查查就知道了。 2、php项目部署到nginx的方法:首先安装“Nginx”和“php-fpm”;然后将项目复制到“nginx/html”文件下;接着修改配置文件;最…

    2024年5月23日
    5100
  • c语言改系统时间戳,c语言计算毫秒级时间戳

    c语言程序设计中如何从系统中调出时间 1、需要利用C语言的时间函数time和localtime,具体说明如下:函数接口介绍:time函数。形式为time_t time (time_t *__timer);其中time_t为time.h定义的结构体,一般为长整型。这个函数会获取当前时间,并返回。 2、话,asctime()函数只是把tm结构对象中的各个域填到时…

    2024年5月23日
    4200
  • linux下的复制粘贴快捷键,linux系统复制粘贴快捷键

    linux注销快捷键 linux常用命令如下:查看内核版本:uname -a。控制台-》图形界面:init 5或者startx。图形界面-》控制台: init3或者直接注销。如何查看ip地址:ifconfig。配置ip:ifconfig eth0 ip地址。 shutdown是一个用来安全关闭或重启Linux系统的命令,系统在关闭之前会通知所有的登录用户,系…

    2024年5月23日
    3800

发表回复

登录后才能评论



关注微信