java实现日历应用程序设计

这篇文章主要为大家详细介绍了java实现日历应用程序设计,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了java实现日历应用程序设计的具体代码,供大家参考,具体内容如下

1、效果和要求

*在文本框inputYear中输入年份,验证年份的有效性;按回车键后,显示输入年份的正确日历
* 单击previousMonth按钮可以显示当前月的上一月的日历;如果月份小于1,则显示上一年的12月
* 单击nextMonth按钮,可以显示当前月的下一月的日历;如果月份大于1,则显示下一年的1月

2、源码

CalendarBean.java

import java.util.Calendar; public class CalendarBean {     String day[];     int year = 2013, 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;     }     //返回某年某月1号开始的日期数组     public String[] getDays() {         String a[] = new String[42];         Calendar 日历 = Calendar.getInstance();         //注意:1月份是从0开始,所以要减1         日历.set(year, month - 1, 1);         int 星期几 = 日历.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 = 星期几, n = 1; i <星期几 + day; i++) {             a[i] = String.valueOf(n);             n++;         }         return a;     } }

CalendarFrame.java

import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class CalendarFrame extends JFrame{     JLabel labelDay[] = new JLabel[42];     JLabel labelYear;     JButton titleName[] = new JButton[7];     JButton nextMonth, previousMonth;     JLabel showMessage;     JTextField inputYear;     CalendarBean calendar;     String name[] = { "日", "一", "二", "三", "四", "五", "六" };     int year = 2013, month = 1;     String days[];     public CalendarFrame() {         super("日历应用程序");         calendar = new CalendarBean();         calendar.setYear(year);         calendar.setMonth(month);         days = calendar.getDays();         // 窗口添加scrollPane在中心区         add(getCenterPanel(),BorderLayout.CENTER);         // 窗口添加pNorth 在北面区域         add(getNorthPanel(),BorderLayout.NORTH);         // 窗口添加pSouth 在南区域。         add(getSouthPanel(),BorderLayout.SOUTH);     }     private JPanel getNorthPanel() {         JPanel panel = new JPanel();         labelYear = new JLabel("请输入年份:");         inputYear = new JTextField(10);         previousMonth = new JButton("上月");         nextMonth = new JButton("下月");         /**          * 添加时间监听          */         inputYear.addActionListener(new ActionListener() {             @Override             public void actionPerformed(ActionEvent e) {                 try{                     year = Integer.parseInt(inputYear.getText());                 }catch (NumberFormatException el){                     JOptionPane.showMessageDialog(null,"请输入正确年份!");                 }                 calendar.setYear(year);                 UpdateUI();             }         });         previousMonth.addActionListener(new ActionListener() {//上个月             @Override             public void actionPerformed(ActionEvent e) {                 month--;//获取上个月的时间                 //System.out.println("Hello World");                 if(month<=0){//跳到上一年                     year--;                     month = 12;                 }                 UpdateUI();;             }         });         nextMonth.addActionListener(new ActionListener() {//下个月             @Override             public void actionPerformed(ActionEvent e) {                 month++;                 if(month>12){//到达下一年                     year++;                     month=1;                 }                 UpdateUI();;             }         });         panel.add(labelYear,new FlowLayout());         panel.add(inputYear,new FlowLayout());         panel.add(previousMonth,new FlowLayout());         panel.add(nextMonth,new FlowLayout());         return panel;     }     private JPanel getCenterPanel() {         JPanel panel = new JPanel();         // 将panel的布局设置为7行7列的GridLayout布局         panel.setLayout(new GridLayout(7,7));         for (int i = 0; i <7; i++) {             titleName[i] = new JButton(name[i]);             // panel添加组件titleName[i]             panel.add(titleName[i]);         }         for (int i = 0; i <42; i++) {             labelDay[i] = new JLabel(days[i], JLabel.CENTER);             // panel添加组件labelDay[i]             panel.add(labelDay[i]);         }         return panel;     }     private JPanel getSouthPanel() {         JPanel panel = new JPanel();         showMessage = new JLabel("日历: " + year + "年" + month + "月");         panel.add(showMessage);         return panel;     }     //添加的方法     private void UpdateUI(){         calendar.setYear(year);         calendar.setMonth(month);         days = calendar.getDays();         for (int i = 0; i <42; i++) {             labelDay[i].setText(days[i]);         }         showMessage.setText("日历:"+calendar.getYear()+"年"+calendar.getMonth()+"月");     } }

CalendarMainClass.java

import javax.swing.*; public class CalendarMainClass {     public static void main(String args[]) {         CalendarFrame frame = new CalendarFrame();         frame.setBounds(100, 100, 360, 320);         frame.setVisible(true);          frame.validate();         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);     } }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持0133技术站。

以上就是java实现日历应用程序设计的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » Java