java日历小程序
java日历记事本小游戏当前时间代码
rightPanel=new JPanel();
this.year=year;
this.month=month;
this.day=day;
负责改变年=new Year(this);
private static final long serialVersionUID = -1805873342285018876L;
int a,b,c;
WindowButton Game;
Timer Time;
CalendarPad 开始=null;
fileMenu1.add(item1);
fileMenu1.add(item2);
fileMenu1.add(item3);
bar.add(fileMenu1);
win.setMenuBar(bar);
win.add(la,BorderLayout.CENTER);
item1=new MenuItem("日历记事本");
bar=new MenuBar();
fileMenu1=new Menu("菜单选项");
item2=new MenuItem("小游戏");
item3=new MenuItem("当前时间");
if(e.getSource()==item2)
{Game=new WindowButton("小游戏");
Game.setVisible(true);}
if(e.getSource()==item3)
{ Calendar calendar=Calendar.getInstance();
JAVA小日历软件设计报告
佛山科学技术学院《可视化编程技术》课程设计报告小日历软件设计学生姓名:学号:年级专业:12级教育技术学指导老师:学院:教育科学学院广东★佛山提交日期:2014年6月目录1. 前言 (2)2.概要设计 (3)2.1 开发环境 (3)2.2 设计目标 (3)2.3 小日历功能 (3)2.4 界面设计 (3)3. 详细设计 (4)3.1 使用的JAVA类的说明 (4)3.2 类的主要方法 (5)3.2.1 设计的方法分析 (5)3.2.2 程序大纲 (5)3.2.3 设计总体认识 (6)3.2.4 程序流程图 (6)4. 运行结果 (7)5. 测试分析 (7)5.1 程序操作 (7)5.2 退出程序 (7)6. 源程序 (8)参考文献 (13)设计总结 (13)摘要:该程序是一个图形界面的简单的Java小日历,具有美观舒适的界面,使用者能快捷简单地进行操作。
即时点击就能准确地获得需要的日期信息,充分降低了日期查找的难度和节约了时间,对人们的生活有重要的作用。
点击年份上下箭头可以选取所查年份,通过月份下拉箭头可以选择月份,然后页面就会出现你选择的那月进行每一天日期和星期的查询。
界面以红色系为主,给人舒适的感觉。
关键字:java小日历软件,日历类,查询,事件1 前言Java技术在1995年被互联网所接受,通过不断的发展和完善,已由单一的编程语言演变成为具有广泛实用性的开发大平台。
Java技术已被IT业内的主要公司所接受并加以运用。
Java技术的高效性、通用性、平台移植性和安全性等使之成为网络应用的首选技术。
从笔记本电脑到数据中心,从游戏控制台到科学超级计算机,从手机到互联网,Java无处不在!Java开发小组把Java按特性分为基本版、移动版、企业版,每个版本有一个软件开发包。
Java基本版本叫Java 2标准版(Java 2 Standard Edition,J2SE),它包含建立Java应用程序或者是Applet所需的应用程序编程接口(API)。
java万年历程序
public Mycalendar(){import java.awt.*;import java.awt.event.*;import java.io.*;import java.text.DateFormat ;import java.text.SimpleDateFormat ;import java.util.Calendar ;import java.util.Date ;import javax.swing.*;import javax.swing.table.DefaultTableModel;public class Mycalendar extends JFrame implements ActionListener , MouseListener {private Calendar cld = Calendar .getInstance();private String [] astr = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};private DefaultTableModel dtm = new DefaultTableModel(null ,astr);private JTable table = new JTable(dtm); //装日期的表格private JScrollPane sp = new JScrollPane(table);private JButton bLastYear = new JButton("上一年");private JButton bNextYear = new JButton("下一年");private JButton bLastMonth = new JButton("上月");private JButton bNextMonth = new JButton("下月");private JTextField jtfYear = new JTextField(5);//jtfYear 年份显示和输入文本框private JTextField jtfMonth = new JTextField(2);//jtfMonth 月份显示文本框private JPanel p1 = new JPanel(); //装入控制日期按钮的模块private JPanel p2 = new JPanel();private JPanel p3 = new JPanel(new BorderLayout ());private JPanel p4 = new JPanel(new GridLayout (2,1));private JPanel p5 = new JPanel(new BorderLayout ());private JButton bAdd = new JButton("保存日志");private JButton bDel = new JButton("删除日志");private JTextArea jta = new JTextArea();private JScrollPane jsp = new JScrollPane(jta);//jta--JTextAreaprivate JLabel l = new JLabel("您可以在年份文本框中键入您要查找的年份");private JLabel lt = new JLabel();private JLabel ld = new JLabel();private int lastTime;super("万年历记事本"); //框架命名this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//窗口关闭函数this.getContentPane().setLayout(new BorderLayout(10, 0));jta.setLineWrap(true);table.setGridColor(Color.GRAY); //星期之间的网格线是灰色的table.setColumnSelectionAllowed(true);table.setSelectionBackground(Color.BLACK);//当选定某一天时这一天背景黑色table.setSelectionForeground(Color.RED);//选定的日期字体是绿色的table.setBackground(new Color(242,240,33));//日期显示表格颜色蓝色table.setFont(new Font("楷体",Font.BOLD,15));//日期数字字体格式table.setRowHeight(30);//表格的高度table.addMouseListener(this); //鼠标监听器jtfYear.addActionListener(this);//可输入年份的文本框//为各个按钮添加监听函数bAdd.addActionListener(this);bDel.addActionListener(this);bLastYear.addActionListener(this);bNextYear.addActionListener(this);bLastMonth.addActionListener(this);bNextMonth.addActionListener(this);//将按钮添加到Jpanel上p1.add(bLastYear);p1.add(jtfYear);//年份输入文本框p1.add(bNextYear);p1.add(bLastMonth);p1.add(jtfMonth);p1.add(bNextMonth);p2.add(bAdd);p2.add(bDel);p3.add(jsp, BorderLayout.CENTER);p3.add(p2, BorderLayout.SOUTH);p3.add(ld, BorderLayout.NORTH);p4.add(l);p4.add(lt);p5.add(p4, BorderLayout.SOUTH);p5.add(sp, BorderLayout.CENTER);p5.add(p1, BorderLayout.NORTH);this.getContentPane().add(p5, BorderLayout.CENTER);this.getContentPane().add(p3, BorderLayout.EAST);String [] strDate = DateFormat.getDateInstance().format(new Date()).split("-");//获得日期cld.set(Integer.parseInt(strDate[0]), Integer.parseInt(strDate[1])-1, 1);showCalendar(Integer.parseInt(strDate[0]), Integer.parseInt(strDate[1]), cld);jtfMonth.setEditable(false);//设置月份的文本框为不可编辑jtfYear.setText(strDate[0]);jtfMonth.setText(strDate[1]);this.showTextArea(strDate[2]);ld.setFont(new Font("楷体",Font.BOLD,14));new Timer(lt).start();this.setBounds(200,200,600,320);this.setResizable(false);this.setVisible(true);}public void showCalendar(int localYear, int localMonth, Calendar cld){int Days = getDaysOfMonth(localYear, localMonth) + cld.get(Calendar.DAY_OF_WEEK) - 2;Object [] ai = new Object[7];lastTime = 0;for (int i = cld.get(Calendar.DAY_OF_WEEK)-1; i <= Days; i++){ai[i%7] = String.valueOf(i- (cld.get(Calendar.DAY_OF_WEEK)-2));if (i%7 == 6){dtm.addRow(ai);ai = new Object[7];lastTime++;}}dtm.addRow(ai);}public int getDaysOfMonth(int year, int Month) //显示所选月份的天数{if(Month == 1 || Month == 3 || Month == 5 || Month == 7 || Month == 8 || Month == 10 || Month == 12){return 31;}if(Month == 4 || Month == 6 || Month == 9 || Month == 11){return 30;}if(year%4 == 0 && year%100 != 0 || year%400 == 0)//闰年{return 29;}else{return 28;}}public void actionPerformed(ActionEvent e){if(e.getSource() == jtfYear || e.getSource() == bLastYear || e.getSource() == bNextYear ||e.getSource() == bLastMonth || e.getSource() == bNextMonth){int m, y;try//控制输入的年份正确,异常控制{if (jtfYear.getText().length() != 4){throw new NumberFormatException();}y = Integer.parseInt(jtfYear.getText());m = Integer.parseInt(jtfMonth.getText());}catch (NumberFormatException ex){JOptionPane.showMessageDialog(this, "请输入位-9的数字! ", "年份有误", JOptionPane.ERROR_MESSAGE);return ;}ld.setText("没有选择日期");for (int i = 0; i < lastTime+1; i++){ dtm.removeRow(0);}if(e.getSource() == bLastYear){ jtfYear.setText(String.valueOf(--y)); }if(e.getSource() == bNextYear){jtfYear.setText(String.valueOf(++y)); }if(e.getSource() == bLastMonth){if(m == 1){jtfYear.setText(String.valueOf(--y));m = 12;jtfMonth.setText(String.valueOf(m));}else{jtfMonth.setText(String.valueOf(--m));}}if(e.getSource() == bNextMonth){if(m == 12){jtfYear.setText(String.valueOf(++y));m = 1;jtfMonth.setText(String.valueOf(m));}else{jtfMonth.setText(String.valueOf(++m));}}cld.set(y, m-1, 0);showCalendar(y, m, cld);}if(e.getSource() == bAdd){int r = table.getSelectedRow();int c = table.getSelectedColumn();if(!ld.getText().equals("没有选择日期")){try{File file = new File(ld.getText() + ".txt");BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file)));bw.write(jta.getText());bw.close();}catch (FileNotFoundException ex){ex.printStackTrace();}catch (IOException ex){ex.printStackTrace();}}}if(e.getSource() == bDel){int r = table.getSelectedRow();int c = table.getSelectedColumn();File filedel = new File(ld.getText() + ".txt");if(filedel.exists()){if(filedel.delete()){jta.setText("日志删除成功");}else{jta.setText("日志删除失败");}}else{jta.setText("没有找到日志文件");}}}public void mouseClicked(MouseEvent e){jta.setText(null);int r = table.getSelectedRow();int c = table.getSelectedColumn();if (table.getValueAt(r,c) == null){ld.setText("没有选择日期");}else{this.showTextArea(table.getValueAt(r,c));}}public void mousePressed(MouseEvent e){}public void mouseReleased(MouseEvent e){}public void mouseEntered(MouseEvent e){}public void mouseExited(MouseEvent e){}private void showTextArea(Object selected){ld.setText(jtfYear.getText()+"年"+jtfMonth.getText()+"月"+selected+"日");File filein = new File(ld.getText() + ".txt");if(filein.exists()){try{BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(filein)));String strRead = br.readLine();jta.setText(null);while(strRead != null){jta.append(strRead);strRead = br.readLine();}br.close();}catch (FileNotFoundException ex){ex.printStackTrace();}catch (IOException ex){ex.printStackTrace();}}}public static void main(String[] args){JFrame.setDefaultLookAndFeelDecorated(true);JDialog.setDefaultLookAndFeelDecorated(true);new Mycalendar();}}class Timer extends Thread//显示系统时间{private JLabel lt;private SimpleDateFormat fy = new SimpleDateFormat("yyyy.MM.dd G 'at' HH:mm:ss z");private SimpleDateFormat fn = new SimpleDateFormat("yyyy.MM.dd G 'at' HH mm ss z");private boolean b = true;public Timer(JLabel lt){this.lt = lt;}public void run(){while (true){try{if (b){lt.setText(fy.format(new Date()));}else{lt.setText(fn.format(new Date()));}b = !b;this.sleep(500);}catch (InterruptedException ex){ex.printStackTrace();}}}}。
java日历小程序课程设计
java日历小程序课程设计【标题】Java日历小程序课程设计【摘要】本文将详细介绍一种基于Java编程语言的日历小程序的设计和实现。
通过该小程序,用户可以方便地查看日期、周数和节假日,并进行简单的日程安排。
本文将分为以下几个部分进行介绍:需求分析、系统设计、界面设计、功能实现和测试。
通过阅读本文,读者将了解到如何使用Java编写一个简单实用的日历小程序。
【关键词】Java编程语言、日历小程序、需求分析、系统设计、界面设计、功能实现、测试【正文】一、需求分析日历小程序的主要功能是显示当前日期、周数和节假日,并提供简单的日程安排功能。
用户可以通过界面直观地查看日历信息,并添加、编辑和删除日程。
具体需求如下:1. 显示当前日期:程序启动时,显示当前日期,包括年、月、日。
2. 显示当前周数:程序启动时,显示当前所在周数。
3. 显示节假日信息:根据国家或地区的节假日规定,显示当天是否为节假日。
4. 查看日历:用户可以通过界面查看指定年份和月份的日历信息。
5. 添加日程:用户可以添加新的日程安排,包括日期、时间和内容。
6. 编辑日程:用户可以编辑已有的日程安排,修改日期、时间和内容。
7. 删除日程:用户可以删除已有的日程安排。
二、系统设计1. 技术选型:本系统采用Java编程语言进行开发。
使用Java的面向对象特性,实现日历小程序的各项功能。
2. 架构设计:采用MVC(Model-View-Controller)架构模式,将数据、界面和逻辑分离,提高代码的可维护性和可扩展性。
3. 数据存储:使用SQLite数据库存储日程信息,包括日期、时间和内容。
4. 外部接口:通过调用第三方API获取节假日信息,并根据返回的数据判断当天是否为节假日。
三、界面设计1. 主界面:显示当前日期、周数和节假日信息。
提供查看日历、添加日程、编辑日程和删除日程的入口。
2. 日历界面:根据用户选择的年份和月份,显示对应的日历信息。
用户可以通过左右滑动切换月份。
(完整word版)小日历-JAVA课程设计实验报告
public static final Color selectedBackgro und= Color.gree n;〃设置被选中的日期的背景颜色
public static final Color selectedForegro un d= Color.white;〃设置被选中的日期的前 景颜色
public static final Color backgro und = Color.white; public static final Color foregro und = Color.black;
public static final Color headerBackground = Color.blue;颜色
定义了一个主日历面板类MyCalendar,其中包含了日历设计所用到的全局变量、功
能函数等,在Frame类里定义了其对象。在该日历面板类里又设计了一个内部类Cale ndarTable表格类,用于布局日历天的显示格式。
为了设计一个超级链接,定义了一个LinkLable类,单独保存在一个文件
ar里定义了其对象。
3.
(1).AWT与Swing的使用.⑵应用JApplet生成界面.
4.
(1) 本小日历设计主体结构为:设计一个框架MainFrame,然后在MainFrame里 添加一个MainPanel面板。定义一个MainPanel面板类,该面板以边布局格式,所有其 他面板、标签等均添加到该面板中。
(2)Mai nPa nel面板北部(上方),添加一个年月面板YearMo nthPa nel。该年月面 板主要放年份显示、月份显示、标题显示。YearMonthPanel面板也使用边布局格式,西 部添加一个年份面板,放年份信息;中部添加一个TextPanel面板,放标题文本显示信 息;东部添加一个月份面板Mon thPa nel,放月份下拉框信息。
如何用Java制作一个简易日历
如何⽤Java制作⼀个简易⽇历简易⽇历制作记录⼀下Java实现的⼀个⽇历⼩程序,效果图如下:实现以上的效果,我们需要⽤到两个类:SimpleDateFormat和Calendar。
⾸先看看这两个类的⽤法:类 SimpleDateFormatSimpleDateFormat是⼀个以与语⾔环境有关的⽅式来格式化和解析⽇期的具体类。
它允许进⾏格式化(⽇期(Date) -> ⽂本(String))、解析(⽂本(String) -> ⽇期(Date))和规范化。
具体要⽤到的⽅法( pattern) ⽤给定的模式和默认语⾔环境的⽇期格式符号构造 SimpleDateFormat。
( source) 从给定字符串的开始解析⽂本以⽣成⽇期。
这⾥我们使⽤SimpleDateFormat⽣成⼀个格式为“yyyy-MM”的实例,并通过parse⽅法将我们输⼊的字符串转换成⽇期(Date)对象。
具体实现如下:SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM"); //⽣成格式化实例System.out.print("请输⼊要查询的⽉份(yyyy-MM):");String str = scanner.next(); //获取输⼊字符串Date date = null; //要获取的Date对象变量try {date = sdf.parse(str); //将字符串转成⽇期对象,这⾥会抛出格式转换异常,需要⽤try..catch进⾏处理} catch (Exception e) {System.out.println("时间格式不正确");}通过字符串获取Date对象类 CalendarCalendar类是⼀个抽象类,它为特定瞬间与⼀组诸如YEAR(年)、MONTH(⽉)、Date(⽇)等⽇历字段之间的转换提供了⼀些⽅法,并为操作⽇历字段(例如获得下星期的⽇期)提供了⼀些⽅法。
日历
Java日历的小程序Java写的日历小程序,算法效率虽然不算很高,却是简单实用的CalendarBean.javaimport java.util.Calendar;public class CalendarBean{String day[];int year=2005,month=0;public void setYear(int year){this.year=year;}public int getYear(){return year;}public void setMonth(int month){this.month=month;}public int getMonth(){return month;}public String[] getCalendar(){String a[]=new String[42];Calendar date=Calendar.getInstance();date.set(year,month-1,1);int week=date.get(Calendar.DAY_OF_WEEK)-1;int day=0;//判断大月份if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){day=31;}//判断小月if(month==4||month==6||month==9||month==11){day=30;}//判断平年与闰年if(month==2){if(((year%4==0)&&(year%100!=0))||(year%400==0)){day=29;}else{day=28;}}for(int i=week,n=1;i<week+day;i++){a[i]=String.valueOf(n) ;n++;}return a;}}CalendarFrame.javaimport java.awt.*;import java.awt.event.*;import javax.swing.*;public class CalendarFrame extends JFrame implements ActionListener {JLabel labelDay[]=new JLabel[42];JTextField text=new JTextField(10);JButton titleName[]=new JButton[7];JButton button = new JButton();String name[]={"日","一","二","三", "四","五","六"};JButton nextMonth,previousMonth;int year=1996,month=1; //启动程序显示的日期信息CalendarBean calendar;JLabel showMessage=new JLabel("",JLabel.CENTER);JLabel lbl1 = new JLabel("请输入年份:");JLabel lbl2=new JLabel(" ");public CalendarFrame(){JPanel pCenter=new JPanel();//将pCenter的布局设置为7行7列的GridLayout 布局。
自学java编写的日历小程序
//1900年以来的日历imp ort j ava.u til.*;pu blicclass Test10 {publ ic st aticvoidmain(Strin g[] a rgs){Sc anner in=n ew Sc anner(Syst em.in);Syste m.out.prin tln("请输入年份:");int year s=in.nextI nt();Sy stem.out.p rintl n("请输入月份:");int m onth=in.ne xtInt();Syst em.ou t.pri ntln("请输入日期:");in t day=in.n extIn t();int sum=0;for(i nt ye ar=1900;ye ar<ye ars;y ear++){if(ye ar%4==0&&y ear%100!=0||yea r%400==0){sum+=366;}e lse{s um+=365;}}for(i nt i=1;i<m onth;i++){i f(i==2){if(year s%4==0&&ye ars%100!=0||yea rs%400==0){ sum+=29;}else{sum+=28;}}else if(i==4||i==6||i==9||i==11){s um+=30;}els e{sum+=31;}}Sy stem.out.p rintl n("一\t二\t三\t四\t五\t六\t日");in t day1=sum%7+1;in t mon thday;i f(mon th==2){if(y ears%4==0&&year s%100!=0||years%400==0){m onthd ay=29;}else{mont hday=28;}}els e if(month==4||month==6||month==9||month==11){month day=30;}else{month day=31;}for(i nt k=1;k<d ay1;k++){Sy stem.out.p rint(" \t");}int d=1;for(int w eek1=day1;week1<=7;w eek1++){ Sys tem.o ut.pr int(d+" \t");d++;}Sy stem.out.p rintl n();intj=d;whi le(j<=mont hday){for(i nt we ek=1;week<=7;we ek++){Syst em.ou t.pri nt(j+"\t");j++;if(j>month day){break;}}Syst em.ou t.pri ntln();}}}。
java日历
Java日历一、开发语言:java二、开发环境:MyEclipse8.6三、项目名称:java日历控件四、程序运行截图:1.通过单击更改年份:2.通过单击更改月份3.通过单击更改日期4.通过键盘方向键更改日期5.右击将快捷第显示当天的日历6.windows日历展示:7.通过双击可以关闭日历8.该日历的实质是一个去掉了修饰的JFrame9.通过右上角很小的关闭按钮也可以关闭日历10.该日历应用于其它应用程序进行日期输入,日期修改五、程序源文件文件一:package net.cqwu.control;/*_*=====使用已有类Calendar======*_*/import java.text.DateFormatSymbols;import java.util.*;/*** @version 1.4 2007-04-07* @author Cay Horstmann*/public class StandardCalendar{public static void main(String[] args) {GregorianCalendar d = new GregorianCalendar();StandardCalendar s= new StandardCalendar(d.get(Calendar.YEAR), d.get(Calendar.MONTH) - 1, d.get(Calendar.DAY_OF_MONTH));System.out.print(s.getCalendarString());String [][] b = s.getCalendarNumber2D(s.calendarString);int[][] a = s.getMinIndexOutOfMonth(b);for (int[] t: a){for (int p : t){System.out.print(p + " ");}}}public StandardCalendar(int ye, int mo, int da) {super();this.ye = ye;this.mo = mo;this.da = da;}public String getCalendarString(){calendarString = "";// construct d as current dateGregorianCalendar d = new GregorianCalendar(ye, mo, da);int today = d.get(Calendar.DAY_OF_MONTH);System.out.println("今天" + today + "号");int month = d.get(Calendar.MONTH);System.out.println("今天" + (month + 1) + "月");//set d to start date of the monthd.set(Calendar.DAY_OF_MONTH,1);// DAY_OF_WEEK表示一个周中的第几天int weekday = d.get(Calendar.DAY_OF_WEEK);System.out.println("日历当天是一周中的第"+weekday + "天");//get first day of week (Sunday in the U.S.)int firstDayOfWeek = d.getFirstDayOfWeek();// 如果一个月的第一天就是一个周的第一天,就输出上一个月的倒数七天String preMonthString = "";while (weekday == firstDayOfWeek){d.add(Calendar.DAY_OF_MONTH,-1);String temp = "" +d.get(Calendar.DAY_OF_MONTH);preMonthString = temp + " " + preMonthString;System.out.println(temp);weekday = d.get(Calendar.DAY_OF_WEEK);// GregorianCalendar temp1 = new GregorianCalendar(d.get(Calendar.YEAR), d.get(Calendar.MONTH)-1, 1);// do// {// preMonthDays++;// temp1.add(Calendar.DAY_OF_MONTH, 1);// }while(temp1.get(Calendar.MONTH)==month-1);// System.out.println("前一个月有:" + preMonthDays + "天");}//determine the required indentation for the first lineint indent = 0;while(weekday != firstDayOfWeek){indent ++;d.add(Calendar.DAY_OF_MONTH,-1);String temp = "" +d.get(Calendar.DAY_OF_MONTH);preMonthString = temp + " " + preMonthString;System.out.println(temp);weekday = d.get(Calendar.DAY_OF_WEEK);}System.out.println(preMonthString);//print weekday namesString[] weekdayNames = new DateFormatSymbols().getShortWeekdays();do{System.out.printf("%4s",weekdayNames[weekday]);d.add(Calendar.DAY_OF_MONTH,1);weekday = d.get(Calendar.DAY_OF_WEEK);}while(weekday != firstDayOfWeek);System.out.println();// for(int i = 1 ;i <= indent;i++)// {// System.out.print(" ");// }if (preMonthString.length()==21){System.out.print(preMonthString + "\n");calendarString += preMonthString + "\n";}else{System.out.print(preMonthString);calendarString += preMonthString;}d.set(Calendar.DAY_OF_MONTH,1);do{//print dayint day = d.get(Calendar.DAY_OF_MONTH);System.out.printf("%2d",day);if (day < 10){calendarString += " " + day;}else{calendarString += day;}// mark current day with *if(day == today){System.out.print("*");calendarString += "*";}else{System.out.print(" ");calendarString += " ";}//advance d to the next dayd.add(Calendar.DAY_OF_MONTH,1);weekday = d.get(Calendar.DAY_OF_WEEK);//start a new line at the start of the week if(weekday == firstDayOfWeek){System.out.println();calendarString += "\n";}}while(d.get(Calendar.MONTH) == month);//the loop exits when d is day 1 of the next month// 填充日历中的尾部do{//print dayint day = d.get(Calendar.DAY_OF_MONTH);System.out.printf("%2d",day);if (day < 10){calendarString += " " + day;}else{calendarString += day;}// mark current day with *if(day == today){System.out.print("*");calendarString += "*";}else{System.out.print(" ");calendarString += " ";}//advance d to the next dayd.add(Calendar.DAY_OF_MONTH,1);weekday = d.get(Calendar.DAY_OF_WEEK);//start a new line at the start of the weekif(weekday == firstDayOfWeek){System.out.println();calendarString += "\n";}}while(calendarString.length()<=131);// System.out.println("月份" + d.get(Calendar.MONTH));//print final end of line if necessary// if(weekday != firstDayOfWeek)// System.out.println();// System.out.println(calendarString);return calendarString;}// 获得一维日历字符串数组public String[] getCalendarNumber(String calendarString){String[] tempArray = calendarString.split("\n");String standardString = "";String[] standardStringArray = new String[42];for (int i = 0; i < tempArray.length; i ++){standardString += tempArray[i];}// System.out.println(standardString);int standardStringLength = standardString.length();for (int i = 0, j = 1, k =0 ; i < standardStringLength - 2 && j < standardStringLength - 1 && k < 49; i += 3, j += 3, k ++) {standardStringArray[k] = (standardString.charAt(i)==' '?"":standardString.charAt(i)) +""+ standardString.charAt(j);}// for (String temp : standardStringArray)// {// System.out.print(temp + " ");// }return standardStringArray;}// 获得二维日历字符串数组public String[][] getCalendarNumber2D(String calendarString){String[][] standardStringArray2D = new String[6][7];String[] temp = this.getCalendarNumber(this.calendarString);for (int i = 0; i < temp.length; i++) {standardStringArray2D[i/7][i%7] = temp[i];}System.out.println("输出二维数组");for (String [] temp1 : standardStringArray2D){for (String temp2 : temp1){System.out.print(temp2 + " ");}System.out.println();}return standardStringArray2D;}// 该方法用于获得本日历的两个1的索引public int[][] getMinIndexOutOfMonth(String[][] temp){int[][] index = {{0,0}, {0, 0}};for (int i = 0; i < 6; i++) {for (int j = 0; j < 7; j++) {if (Integer.parseInt(temp[i][j]) == 1 && i < 2){index[0][0] = i;index[0][1] = j;}if (Integer.parseInt(temp[i][j]) == 1 && i > 2){index[1][0] = i;index[1][1] = j;}}}return index;}public int getYe() {return ye;}public void setYe(int ye) {this.ye = ye;}public int getMo() {return mo;}public void setMo(int mo) {this.mo = mo;}public int getDa() {return da;}public void setDa(int da) {this.da = da;}private String calendarString = null;private int ye ;private int mo;private int da;};文件二:package net.cqwu.control;import java.awt.Toolkit;/*** 定义一个接口,获得显示器的大小* @version 2011-04-26* @author yelin*/public interface ScreenSize{public static final int DEFAULT_WIDTH = Toolkit.getDefaultToolkit().getScreenSize().width;public static final int DEFAULT_HEIGHT = Toolkit.getDefaultToolkit().getScreenSize().height;};文件三:package net.cqwu.model;import java.awt.Color;import java.awt.Cursor;import java.awt.EventQueue;import java.awt.Font;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import java.awt.event.MouseMotionListener;import java.awt.event.MouseWheelEvent;import java.awt.event.MouseWheelListener;import java.awt.event.WindowEvent;import java.awt.event.WindowListener;import java.awt.font.FontRenderContext;import java.awt.font.LineMetrics;import java.awt.geom.Rectangle2D;import java.util.Calendar;import java.util.GregorianCalendar;import javax.swing.JFrame;import javax.swing.JMenuItem;import javax.swing.JPanel;import javax.swing.JPopupMenu;import javax.swing.event.MouseInputListener;import net.cqwu.control.ScreenSize;import net.cqwu.control.StandardCalendar;/*** 设计一个日历控件,可以在任何地方使用.* 使用说明:若作为控件使用请转至691行作用,在MainCalendar构造时注册* 你自己的类,进行对象之间的通讯,可以在691行处获取日历。
使用Java创建简单的日历应用程序
使用Java创建简单的日历应用程序-一个实战教程日历应用程序是一个有用的工具,它允许用户记录和管理事件、约会和提醒。
在这个实战博客中,我们将创建一个Java日历应用程序,演示如何使用Java编程语言和图形用户界面(GUI)库来实现事件管理和日期选择功能。
以下是本实战博客的主要内容:项目概述准备工作创建Java项目设计GUI界面实现日历视图添加事件管理功能总结让我们开始吧!1. 项目概述在本项目中,我们将创建一个简单的Java日历应用程序,它包括以下主要功能:显示日历界面,允许用户选择日期。
在日历中标记已经安排的事件和约会。
允许用户添加、编辑和删除事件。
提供事件的日期和时间提醒功能。
我们将使用Java编程语言和Swing GUI库来构建这个日历应用程序。
2. 准备工作在开始之前,确保您的开发环境已设置好。
我们将使用Java编程语言和Swing库来构建日历应用程序,不需要额外的工具或库。
3. 创建Java项目首先,创建一个新的Java项目,您可以使用任何Java集成开发环境(IDE)来完成此操作。
在项目中,我们将创建Java类来实现日历应用程序。
4. 设计GUI界面我们将创建一个简单的Swing GUI界面,用于显示日历界面和事件列表。
创建一个Java类,例如CalendarApp,并在其中创建GUI界面。
javaCopy codeimport javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.Calendar;import java.util.Date;public class CalendarApp {private JFrame frame;private JPanel calendarPanel;private JPanel eventPanel;private JTextArea eventList;private JButton addButton;private JButton editButton;private JButton deleteButton;public CalendarApp() {frame = new JFrame("日历应用程序");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(800, 600);frame.setLayout(new BorderLayout());calendarPanel = new JPanel(new BorderLayout());eventPanel = new JPanel(new BorderLayout());eventList = new JTextArea();eventList.setEditable(false);JScrollPane eventScrollPane = new JScrollPane(eventList);addButton = new JButton("添加事件");editButton = new JButton("编辑事件");deleteButton = new JButton("删除事件");eventPanel.add(eventScrollPane, BorderLayout.CENTER);eventPanel.add(addButton, BorderLayout.NORTH);eventPanel.add(editButton, BorderLayout.WEST);eventPanel.add(deleteButton, BorderLayout.EAST);frame.add(calendarPanel, BorderLayout.WEST);frame.add(eventPanel, BorderLayout.CENTER);addButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {addEvent();}});editButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {editEvent();}});deleteButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {deleteEvent();}});frame.setVisible(true);}public static void main(String[] args) {SwingUtilities.invokeLater(() -> new CalendarApp());}private void addEvent() {// 实现添加事件的代码,略...}private void editEvent() {// 实现编辑事件的代码,略...}private void deleteEvent() {// 实现删除事件的代码,略...}}在上述代码中,我们创建了一个CalendarApp类,包括一个Swing窗口、日历界面和事件列表。
日历程序
Java写的日历小程序,算法效率虽然不算很高,却是简单实用的CalendarBean.javaimport java.util.Calendar;public class CalendarBean{String day[];int year=2005,month=0;public void setYear(int year){this.year=year;}public int getYear(){return year;}public void setMonth(int month){this.month=month;}public int getMonth(){return month;}public String[] getCalendar(){String a[]=new String[42];Calendar date=Calendar.getInstance();date.set(year,month-1,1);int week=date.get(Calendar.DAY_OF_WEEK)-1;int day=0;//判断大月份if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){day=31;}//判断小月if(month==4||month==6||month==9||month==11){day=30;}//判断平年与闰年if(month==2){if(((year%4==0)&&(year%100!=0))||(year%400==0 )){day=29;}else{day=28;}}for(int i=week,n=1;i<week+day;i++){a[i]=String.valueOf(n) ;n++;}return a;}}CalendarFrame.javaimport java.awt.*;import java.awt.event.*;import javax.swing.*;public class CalendarFrame extends JFrame implements ActionListener{JLabel labelDay[]=new JLabel[42];JTextField text=new JTextField(10);JButton titleName[]=new JButton[7];JButton button = new JButton();String name[]={"日","一","二","三", "四","五","六"};JButton nextMonth,previousMonth;int year=1996,month=1; //启动程序显示的日期信息CalendarBean calendar;JLabel showMessage=new JLabel("",JLabel.CENTER);JLabel lbl1 = new JLabel("请输入年份:");JLabel lbl2=new JLabel(" ");public CalendarFrame(){JPanel pCenter=new JPanel();//将pCenter的布局设置为7行7列的GridLayout 布局。
java万年历程序代码
package pack;import javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.Calendar;import java.util.Date;public class rili extends JFrame implements ActionListener { JButton b_today, b_query;JLabel lb_Year, lb_Month;JButton b_week[] = new JButton[7];JButton b_day[][] = new JButton[6][7];Container thisContainer;JPanel pUp;JPanel pCenter;JPanel pCenter_week, pCenter_day;JComboBox year, month;public void init() {b_today = new JButton("Today");b_query = new JButton("Query");setTitle("日历");lb_Year = new JLabel("Year");lb_Month = new JLabel("Month");year = new JComboBox();month = new JComboBox();setDate();pUp = new JPanel();pUp.add(lb_Year);pUp.add(year);pUp.add(lb_Month);pUp.add(month);pUp.add(b_today);pUp.add(b_query);b_today.addActionListener(this);b_query.addActionListener(this);pCenter = new JPanel();pCenter_week = new JPanel();b_week[0] = new JButton("星期日");b_week[1] = new JButton("星期一");b_week[2] = new JButton("星期二");b_week[3] = new JButton("星期三");b_week[4] = new JButton("星期四");b_week[5] = new JButton("星期五");b_week[6] = new JButton("星期六");b_week[0].setSize(400, 200);b_week[1].setSize(400, 200);b_week[2].setSize(400, 200);b_week[3].setSize(400, 200);b_week[4].setSize(400, 200);b_week[5].setSize(400, 200);b_week[6].setSize(400, 200);for (int i = 0; i < 7; i++) {b_week[i].setEnabled(false);pCenter_week.add(b_week[i]);}pCenter_day = new JPanel();for (int cols = 0; cols < 6; cols++) {for (int rows = 0; rows < 7; rows++) {b_day[cols][rows] = new JButton("");b_day[cols][rows].setSize(400, 200);this.pCenter_day.add(b_day[cols][rows]);}}pCenter_day.setLayout(new GridLayout(6, 7));setDay(Integer.parseInt(this.year.getSelectedItem().toString()),Integer.parseInt(this.month.getSelectedItem().toString()));// setDay(2011,2);pCenter.setLayout(new BorderLayout());pCenter.add(pCenter_week, "North");pCenter.add(pCenter_day, "Center");thisContainer = this.getContentPane();thisContainer.setLayout(new BorderLayout());thisContainer.add(pUp, "North");thisContainer.add(pCenter, "Center");this.setVisible(true);this.setResizable(false);this.pack();}public void setDate() {int year, month, day, week;Calendar cal = Calendar.getInstance();year = cal.get(Calendar.YEAR);month = cal.get(Calendar.MONTH);day = cal.get(Calendar.DA TE);week = cal.get(Calendar.WEEK_OF_YEAR);int year_temp = year - 4;for (int i = 0; i < 10; i++) {this.year.addItem(year_temp);year_temp += 1;}this.year.setSelectedIndex(4);for (int n = 0; n < 12; n++) {this.month.addItem(n + 1);}this.month.setSelectedIndex(month);}public void setDay(int Year, int Month) {int count;Calendar c = Calendar.getInstance();c.clear();c.set(Year, Month-1, 1);count = c.getActualMaximum(Calendar.DAY_OF_MONTH); // 总天数System.out.print(count);int day = c.get(Calendar.DAY_OF_WEEK) - 1; // 0为星期天,6为星期六System.out.print(day);int i = 1 - day;for (int cols = 0; cols < 6; cols++) {for (int rows = 0; rows < 7; rows++) {String st = String.valueOf(i);b_day[cols][rows].setText(st);b_day[cols][rows].setEnabled(false);if (i > 0 && i <= count)b_day[cols][rows].setVisible(true);elseb_day[cols][rows].setVisible(false);i++;}}}public void actionPerformed(ActionEvent e) {if (e.getSource() == b_query) {this.setDay(Integer.parseInt(this.year.getSelectedItem().toString()), Integer.parseInt(this.month.getSelectedItem().toString()));}if (e.getSource() == b_today) {int year, month;Calendar cal = Calendar.getInstance();year = cal.get(Calendar.YEAR);month = cal.get(Calendar.MONTH)+1;this.setDay(year,month);}}public static void main(String[] args) {rili rl = new rili();rl.init();}}。
java课程设计简单日历程序
课程设计题目2. 题目说明通过编写一个基于JAVA的应用系统综合实例,自定义一个日历组件显示日期和时间并进行适当的功能扩充,实践Java语言编程技术。
3. 系统设计设计目标一个完整的程序应具有以下功能:1)显示当月日历、当前日期、当前时间;2)可查寻任意月以及任意年的日历;3)使用图形化界面能够弹出对话框;5)正常退出程序。
设计思想设计一个类用来构成日历系统的主窗口,然后编写一个框架类显示时间和提示信息。
在设计中应用了多种容器和控件。
系统模块划分图1:简易日历的程序结构图2.3.1初始化:public void init()完成界面初始化,形成一个以挂历形式显示当前日期的窗口。
2.3.2 日历描述:?? (1)public void updateView()改变日期后完成更新界面;? (2)获取系统日期并传递日期数据而且在人工改变日期后得出当天是周几;? (3)public static void main(String[] args)主函数完成系统各算法的调用并对主窗口的一些属性进行设置;2.3.3 滚动时间:? ? 将时间以文本的形式在文本框中滚动播出,并能改变滚动的速度。
4. 使用类及接口仅仅简单说明类的功能,详细资料请参看《JavaTM?2?Platform Standard?Ed. 6》的电子文档,常规的接口与包则省略不屑。
;import .*; ;运行结果与分析图2:初始界面显示日历。
图3:点击查看时间按钮,弹出时间消息对话框。
图4:滚动显示当前时间。
6. 程序源代码/*** @(#)* @author fancy*/oString()+"按钮");}});yearsLabel = new JLabel("Year: ");yearsSpinner = new JSpinner();(new (yearsSpinner, "0000"));(new Integer));(new ChangeListener() {public void stateChanged(ChangeEvent changeEvent) {int day = ;, 1);, ((Integer) ()).intValue());int maxDay = ;, day > maxDay maxDay : day);updateView();}});JPanel yearMonthPanel = new JPanel();(yearMonthPanel, ;(new BorderLayout());(new JPanel(), ;JPanel yearPanel = new JPanel();(yearPanel, ;(new BorderLayout());(yearsLabel, ;(yearsSpinner, ;monthsLabel = new JLabel("Month: ");monthsComboBox = new JComboBox();for (int i = 1; i <= 12; i++) {(new Integer(i));});(new ActionListener() {public void actionPerformed(ActionEvent actionEvent) {int day = ;, 1);, ());int maxDay = ;, day > maxDay maxDay : day);updateView();}});JPanel monthPanel = new JPanel();(monthPanel, ;(new BorderLayout());(monthsLabel, ;(monthsComboBox, ;daysModel = new AbstractTableModel() {public int getRowCount() {return 9;}public int getColumnCount() {return 7;}public Object getValueAt(int row, int column) { if (row == 0) {return getHeader(column);}row--;, 1);int dayCount = ;int moreDayCount = - 1;int index = row * 7 + column;int dayIndex = index - moreDayCount + 1;if (index < moreDayCount || dayIndex > dayCount) {return null;} else {return new Integer(dayIndex);}}};daysTable = new CalendarTable(daysModel, calendar);(true);;(0), new TableCellRenderer() {public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,boolean hasFocus, int row, int column) {String text = (value == null) "" : ();JLabel cell = new JLabel(text);(true);if (row == 0) {(headerForeground);(headerBackground);} else {if (isSelected) {(selectedForeground);(selectedBackground);} else {(foreground);(background);}}return cell;}});updateView();(daysTable, ;}public static String getHeader(int index) {switch (index) {case 0:return WEEK_SUN;case 1:return WEEK_MON;case 2:return WEEK_TUE;case 3:return WEEK_WED;case 4:return WEEK_THU;case 5:return WEEK_FRI;case 6:return WEEK_SAT;default:return null;}}public void updateView() {();,);- 1,- 1);}public static class CalendarTable extends JTable { private Calendar calendar;public CalendarTable(TableModel model, Calendar calendar) {super(model);= calendar;}public void changeSelection(int row, int column, boolean toggle, boolean extend) {(row, column, toggle, extend);if (row == 0) {return;}Object obj = getValueAt(row, column);if (obj != null) {, ((Integer)obj).intValue());}}}public static void main(String[] args) {JFrame frame = new JFrame("简易时间日历");;MyCalendar myCalendar = new MyCalendar();();().add(myCalendar);(330,80);(360, 212);(true);}//滚动字public static class RollbyJFrame extends JFrame{private JTextField text;private JSpinner spinner;private Timer timer;private JButton button;public RollbyJFrame(){super("滚动时间");(360,100);(700,120);Container c=getContentPane();JButton button=new JButton("修改速度");(button,"East");(this);Calendar now = ();int hour=;int minute=;int year=;int month=;int day=;text = new JTextField(" Hello 当前时间是:"+hour+":"+minute+" "+year+"/"+month+"/"+day);(text,"Center");(this); //注册焦点事件监听器timer = new Timer(136,this);();JPanel panel = new JPanel(new FlowLayout);(panel,"South");spinner = new JSpinner();());(spinner);(this);(true);}public void focusGained(FocusEvent e) //获得焦点时{if ()==text){();}}public void focusLost(FocusEvent e) //失去焦点时{if ()==text){();}}public void stateChanged(ChangeEvent e){if ()==spinner){(new Integer(""+())); //设置延时的时间间隔}}public void actionPerformed(ActionEvent e) //定时器定时执行事件{if ()==button);else{String temp = ();temp = (1) + (0,1);(temp);}}public void buttondown(ActionEvent e) //单击事件 {if ()==button){} ;}}}。
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<month_day_score;i++,count++){ 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日历小程序课程设计
湖南农业大学课程论文学院:信息科学技术班级:08级信息工程2班课程论文题目:JAVA日历小程序课程名称:Java程序设计(双语)评阅成绩:评阅意见:成绩评定教师签名:日期:年月日目录摘要 .................................................................. - 1 - 关键词 .................................................................. - 1 - 1需求分析............................................................... - 1 -1.1需求分析......................................................... - 1 -1.2功能设计......................................................... - 1 - 2概要设计............................................................... - 1 -2.1开发环境......................................................... - 1 -2.2程序设计思路..................................................... - 1 -2.3具体功能设计..................................................... - 2 -2.4程序运行界面..................................................... - 2 -2.5程序流程图....................................................... - 3 - 3详细设计............................................................... - 3 -3.1初始化组件....................................................... - 3 -3.2初始化程序数据,绘制程序面板..................................... - 3 -3.3显示日期的方法................................................... - 6 -3.4点击按钮产生的效果............................................... - 8 - 4程序测试............................................................... - 9 -4.1程序不能完全退出................................................. - 9 -4.2下拉列表数据不能返回............................................ - 10 - 5心得体会.............................................................. - 10 - 6参考文献.............................................................. - 11 - 致谢 ................................................................... - 11 - 附:程序源代码.......................................................... - 12 -JA V A日历小程序学生:郭显勇、刘彦波、任涛湖南农业大学信息科学技术学院2008级信息工程2班学号200841843227、200841843228、200841843219摘要:万年历是一个强大的日历系统,通过它可以实现对过去,现在以及将来日期的查询,通过在年份对话框中输入要查询的年份,再相应的在月份对应的下拉菜单选择要查询的月份,则可得到相应的日历。
java日历小程序
java日历小程序Java是一种广泛使用的编程语言,具有跨平台性和易于学习的特点。
在这篇文章中,我将介绍一个使用Java编写的日历小程序,该程序可以匡助用户查看任意年份和月份的日历。
1. 程序概述这个日历小程序的主要功能是根据用户输入的年份和月份,生成对应月份的日历。
用户可以通过命令行输入所需的年份和月份,程序将输出一个按照星期罗列的日历表格。
2. 实现思路为了实现这个日历小程序,我们需要使用Java提供的日期和时间相关的类。
Java提供了一个Calendar类,可以用于处理日期和时间。
我们可以使用Calendar 类中的方法来获取当前日期,以及计算指定日期的星期等信息。
程序的主要逻辑如下:- 获取用户输入的年份和月份。
- 创建一个Calendar对象,并设置为用户输入的年份和月份的第一天。
- 获取该月的天数,并计算该月的第一天是星期几。
- 输出日历表格,按照星期罗列。
3. 代码实现下面是一个简单的Java代码示例,用于实现上述日历小程序的功能:```javaimport java.util.Calendar;public class CalendarProgram {public static void main(String[] args) {// 获取用户输入的年份和月份int year = Integer.parseInt(args[0]);int month = Integer.parseInt(args[1]);// 创建一个Calendar对象,并设置为用户输入的年份和月份的第一天Calendar calendar = Calendar.getInstance();calendar.set(year, month - 1, 1);// 获取该月的天数,并计算该月的第一天是星期几int daysInMonth = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); int firstDayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);// 输出日历表格System.out.println("日一二三四五六");for (int i = 1; i < firstDayOfWeek; i++) {System.out.print(" ");}for (int i = 1; i <= daysInMonth; i++) {System.out.printf("%2d ", i);if ((i + firstDayOfWeek - 1) % 7 == 0) {System.out.println();}}}}```4. 运行结果以下是一个示例运行结果,用户输入年份为2022,月份为3(即3月份):```日一二三四五六1 2 3 4 56 7 8 9 10 11 1213 14 15 16 17 18 1920 21 22 23 24 25 2627 28 29 30 31```5. 总结通过这个简单的Java日历小程序,我们可以看到Java语言的灵便性和易用性。
Java日历小程序
}
else
{
for(int t=1;t<=28;t++)
{
if((tianshu+t)%7==6)
{
System.out.print(t+"\n\n");
continue;
}
System.out.print(t+"\t");
{
if(xingqiji==7) //如果当的1号是星期日,就不在前面输出空格
{
System.out.print("");
}
else
{
System.out.print("\t");
}
}
}
}
}
}
}
{
switch(y)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
tianshuY=tianshuY+31;
break;
case 4:
case 6:
{
System.out.print("");
}
else
{
System.out.print("\t");
}
}
if(year%4==0 &&year%100!=0||year%400==0)//判断2月份的天数,并输出当月的日历表
for(int t=1;t<=30;t++) // //输出当月的日历
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
java日历小程序
简介:
Java日历小程序是一个基于Java语言开发的工具,用于显示和管理日期和时间。
它提供了一种简单而直观的方式来查看、创建和编辑日历事件,并提供了一些额外的功能,如提醒、重复事件和时间段的计算等。
本文将详细介绍Java日历小程序
的功能、使用方法和设计原理。
功能:
1. 显示日历:Java日历小程序可以显示当前月份的日历,并以日、周或月的形
式展示。
用户可以通过界面上的上下翻页按钮切换月份,方便查看不同日期的日历。
2. 创建和编辑事件:用户可以通过Java日历小程序创建新的日历事件,并为每个事件指定标题、日期、时间和地点等详细信息。
程序还提供了事件编辑功能,允许用户修改已有事件的信息。
3. 提醒功能:Java日历小程序可以设置事件的提醒功能,提醒用户在指定的时
间前提醒。
用户可以选择在事件开始前几分钟、几小时或几天提醒,并可以自定义提醒方式,如弹窗、声音或邮件通知等。
4. 重复事件:用户可以为事件设置重复功能,使事件在指定的日期间隔内重复
发生。
可以选择每天、每周、每月或每年重复,并可以设置重复的结束日期。
5. 时间段计算:Java日历小程序可以计算两个日期之间的时间段,如计算两个
事件之间的天数、小时数或分钟数等。
用户可以选择计算方式,并获取精确的时间段结果。
使用方法:
1. 下载和安装:用户可以从官方网站上下载Java日历小程序的安装包,然后按照安装向导进行安装。
安装完成后,用户可以在桌面或开始菜单中找到程序的快捷方式。
2. 打开程序:双击程序的快捷方式,Java日历小程序将启动并显示当前月份的日历。
用户可以通过界面上的按钮和菜单来使用各种功能。
3. 创建事件:用户可以点击界面上的“添加事件”按钮,弹出一个对话框,输入事件的详细信息,如标题、日期、时间和地点等。
点击“确定”按钮后,事件将被创建并显示在日历上。
4. 编辑事件:用户可以在日历上点击已有的事件,弹出一个对话框,允许用户修改事件的信息。
用户可以修改标题、日期、时间和地点等,并点击“保存”按钮来保存修改。
5. 设置提醒:用户可以在创建或编辑事件时,勾选“提醒”选项,并选择提醒的时间和方式。
在事件开始前指定的时间,程序将自动提醒用户。
6. 设置重复:用户可以在创建或编辑事件时,勾选“重复”选项,并选择重复的方式和结束日期。
事件将在指定的日期间隔内重复发生。
7. 时间段计算:用户可以点击界面上的“计算时间段”按钮,弹出一个对话框,输入两个日期,并选择计算方式。
点击“计算”按钮后,程序将显示计算结果。
设计原理:
Java日历小程序采用MVC(Model-View-Controller)的设计模式,将数据、界面和控制逻辑分离。
具体实现上,它使用了Java的Swing库来构建用户界面,通过事件监听器来响应用户的操作,并使用Java的日期和时间类库来处理日期和时间相关的逻辑。
在程序的设计中,日历数据被封装在一个独立的数据模型中,包含了日期、事
件和提醒等信息。
视图部分负责显示日历和事件,并提供用户界面来进行操作。
控制器部分负责监听用户的操作,并根据用户的需求更新数据模型和视图。
总结:
Java日历小程序是一个功能强大且易于使用的工具,可以帮助用户管理日程安排、提醒重要事件,并进行时间段的计算。
它提供了丰富的功能和灵活的设置选项,适用于个人和商业用户。
通过合理的设计和实现,Java日历小程序可以提供稳定、高效和用户友好的体验。