首页 热点 业界 科技快讯 数码 电子消费 通信 前沿动态 电商

今日报丨java实现日历应用程序设计

2022-06-13 10:06:12 来源 : 软件开发网

本文实例为大家分享了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);    }}

标签: 应用程序设计 为大家分享 大家参考

相关文章

最近更新
观焦点:超萌相机 2023-03-01 12:29:37
海南百货网 2023-03-01 12:13:44
焦点热讯:宜点充 2023-02-28 10:10:16
天天关注:小铺CEO 2023-02-28 10:07:13
【世界聚看点】KaFit 2023-02-28 09:31:37
葱天下 2023-02-28 09:17:03
渔界竞钓 2023-02-28 08:15:29
焦点快看:鲸奇视频 2023-02-28 06:30:37
环球热议:萝小逗 2023-02-27 23:25:49
简讯:小码公交 2023-02-27 23:16:12
彼岸花 2023-02-27 22:32:52
时时夺宝 2023-02-27 21:37:50
天天动态:袜之源 2023-02-27 21:29:50
天天资讯:AI空气 2023-02-27 20:19:46
世界时讯:绘读 2023-02-27 20:19:41
看点:一元得购 2023-02-27 19:26:28