java一个简单的万年历,java万年历制作心得体会

  java一个简单的万年历,java万年历制作心得体会

  本文实例为大家分享了爪哇实现万年历效果的具体代码,供大家参考,具体内容如下

  

要求:

综合运用图像使用者界面编程、事件处理、日历类应用等知识设计一款月历,要求能通过输入(或选择)年月的方式正确显示当前月份的所有日期。

 

  

一、分析需求:

1、设计一个窗体,该窗体为边界布局布局;2、窗体的中心添加一个面板容器:面板容器的布局是七行七列的网格布局布局,面板容器中放置49个标签,用来显示日历;3、实现判断是否是闰年;4、计算某一个月的天数;5、明白一个月的第一天是周几,求出月历前面需要空的格数;

 

  

二、代码实现

包pro _ one导入javax。挥棒。*;导入Java。awt。*;导入Java。awt。事件。动作事件;导入Java。awt。事件。动作监听器;导入Java。文字。解析异常;导入Java。文字。简单的日期格式;导入Java。util。日历;导入Java。util。日期;导入Java。util。公历;@SuppressWarnings(serial )公共类pro_one扩展窗口实现动作监听器{ JPanel head=new JPanel();//上部容器JPanel body=new JPanel();//中部容器JPanel foot=new JPanel();//下部容器日历日历=日历。getinstance();int dayNow=calendar.get(日历。日期);int monthNow=Calendar。获取(日历.月)1;现在的int年=日历。获取(日历.年份);私有单行文本文本;//查询年份int year=calendar.get(Calendar .年份);//获取当前查询年份,默认为当前年份私有JTextField text1//查询月份int month=calendar.get(Calendar .月)1;//获取当前查询月份,默认为当前月份private pro_one(){//构造方法//主要参数设置setTitle(月历);setSize(600,480);setLocationRelativeTo(null);//窗体居中setResizable(false);//关闭窗体大小可调setDefaultCloseOperation(EXIT _ ON _ CLOSE);//界面布局//上部容器头。设置布局(new flow layout());JButton search JButton=new JButton(确定);searchJButton.setFont(新字体(‘辛黑’,字体。粗体,15));searchJButton.setPreferredSize(新维度(50,35));搜索jbutton。设置边框(空);JButton upJButton=new JButton(上月);upJButton.setFont(新字体(‘辛黑’,字体。粗体,15));upj按钮。设置边框(空);upJButton.setPreferredSize(新维度(50,35));JButton downJButton=new JButton(下月);downJButton.setFont(新字体(‘辛黑’,字体。粗体,15));向下按钮。设置边框(空);downJButton.setPreferredSize(新维度(50,35));JLabel jLabelShow=new JLabel(请输入日期年份:);jLabelShow.setFont(新字体(‘辛黑’,字体。粗体,15));组件

 

  how1=new JLabel("月份:");        jLabelShow1.setFont(new Font("SimHei",Font.BOLD,15));                text=new JTextField(4);        text1=new JTextField(2);        head.add(jLabelShow);        head.add(text);        head.add(jLabelShow1);        head.add(text1);        head.add(searchJButton);        head.add(upJButton);        head.add(downJButton);        searchJButton.addActionListener(this);        upJButton.addActionListener(this);        downJButton.addActionListener(this);        //中部容器        body.applyComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);//每行添加组件的顺序        body.setLayout(new GridLayout(7,7,1,1));        getDateInfo(String.valueOf(year)+"-"+String.valueOf(month));        //下部容器        foot.setSize(new Dimension(500,200));        foot.setLayout(new FlowLayout(FlowLayout.CENTER));        Container integralContainer=this.getContentPane();//创建全局容器        integralContainer.add(head,BorderLayout.NORTH);        integralContainer.add(body,BorderLayout.CENTER);        integralContainer.add(foot,BorderLayout.SOUTH);    }    @Override    public void actionPerformed(ActionEvent actionEvent) {//监听事件        String label=actionEvent.getActionCommand();        switch (label) {            case "确定":                System.out.println("进入查询");                try {                    year = Integer.parseInt(text.getText());                    month=Integer.parseInt(text1.getText());                    getDateInfo(String.valueOf(year)+"-"+String.valueOf(month));                }catch (NumberFormatException e){                    System.out.println("非数字异常已被捕获,进程正常!");                }                break;            case "上月":                System.out.println("进入上月");                if (month==1){                    year--;                    month=12;                }else                    month--;                getDateInfo(String.valueOf(year)+"-"+String.valueOf(month));                break;            case "下月":                System.out.println("进入下月");                if (month==12){                    year++;                    month=1;                }else                    month++;                getDateInfo(String.valueOf(year)+"-"+String.valueOf(month));                break;        }    }    private void getDateInfo(String date) {//获取日期信息        try {            SimpleDateFormat dFormat = new SimpleDateFormat("yyyy-MM");// 日期格式化类            Date parse = dFormat.parse(date);// 把字符串类型的日期转换为date类型的            Calendar calendar = new GregorianCalendar();// 创建一个公历类的实例            calendar.setTime(parse);// 把格式化好的日期对象放进Calendar            calendar.set(Calendar.DATE, 1);//重置日期为第一天            // 获取这个月的第一天是周几            int weekDay = calendar.get(Calendar.DAY_OF_WEEK);            // 获取每个月最大的天数            int maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);            body.removeAll();            body.repaint();            String[] title = {"日", "一", "二", "三", "四", "五", "六"};            for (String label : title) {                JLabel jLabel = new JLabel(label);                jLabel.setHorizontalAlignment(JLabel.CENTER);                jLabel.setBorder(BorderFactory.createLineBorder(Color.black));                jLabel.setFont(new Font("SimHei", Font.BOLD, 18));                body.add(jLabel);                body.revalidate();            }            for (int i = 1; i <= 42; i++) {                if (i >= weekDay && i <= (maxDay + weekDay - 1)) {                    JLabel jLabel = new JLabel(String.valueOf(i - weekDay + 1));                    jLabel.setFont(new Font("SimHei", Font.BOLD, 15));                    jLabel.setHorizontalAlignment(JLabel.CENTER);                    if ((year==yearNow)&&(month==monthNow)&&(i - weekDay + 1==dayNow)){                        System.out.println("00");                        jLabel.setBorder(BorderFactory.createLineBorder(Color.WHITE));                    }                    body.add(jLabel);                    body.revalidate();                } else {                    JLabel jLabel = new JLabel("");                    jLabel.setHorizontalAlignment(JLabel.CENTER);                    jLabel.setFont(new Font("SimHei", Font.BOLD, 15));                    body.add(jLabel);                    body.revalidate();                }            }            if (year > 0 && year <= 9999) {                foot.removeAll();                foot.repaint();                JLabel show = new JLabel(year + "年" + month + "月");                show.setFont(new Font("SimHei", Font.BOLD, 20));                foot.add(show);//将标签添加到下部容器                foot.revalidate();            }        }catch (ParseException e){            System.out.println("日期异常亦已被捕获,进程正常!");        }    }    public static void main(String[] args){//主方法        JFrame jFrame=new pro_one();        jFrame.setVisible(true);    }}以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持盛行IT。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: