在论坛里面看到的,觉得挺好,具有参考价值。

直接将两个文件放在一起就可以运行。

/**//* File CalendarBean.java
*  author:***
*  Date:2007-12-8 23:37
*  返回某年某月的日历的字符串数组
*/
importjava.util.Calendar;
publicclassCalendarBean...{
    int year = 2007,month = 0;
    private int monthDays[] = ...{31,28,31,30,31,30,31,31,30,31,30,31};
    
    //设置年份
    public void setYear(int year)...{
        this.year = year;
    }
    
    //获取年份
    public int getYear()...{
        return year;
    }
    
    //设置月份
    public void setMonth(int month)...{
        this.month = month > 0 ? month : 1;        
    }
    
    //获取月份
    public int getMonth()...{
        return month;
    }
    
    //判断是否为闰年
    private static boolean isLeap(int year)...{
        return ((year % 4 == 0) && (year %100 == 0)) || (year % 400 == 0);
    }
    
    //获得当前年月的日历所组成字符串数组
    public String[][] getCalendar()...{
        String data[][] = new String[6][7];
        
        Calendar cale = Calendar.getInstance();
        cale.set(year, month -1 ,1);

        //该月1号是星期几
        int weekDay = cale.get(Calendar.DAY_OF_WEEK) - 1;
        
        //该月的天数
        int day = monthDays[month - 1];
        if(month == 2 && isLeap(year)) day = 29;
        
        int nextDay = 1;
        
        //添加字符串数组
        for(int k = 0 ; k < 6; k++)...{
            if( k == 0)
                for(int j = weekDay; j < 7;j++)...{
                    data[k][j] = " " + nextDay;
                    nextDay++;
                }
            else 
                for(int j = 0 ; j < 7 && nextDay <= day; j++)...{
                    data[k][j] = " " + nextDay;
                    nextDay++;
                }
        }
        return data;
    }
    
}
/**//* File CalenderFrame.java
*  author:***
*  Date:2007-12-8 23:37
*  一个简单的日历
*/
importjavax.swing.*;
importjavax.swing.tree.*;
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.event.*;

publicclassCalenderFrame extendsJFrame implementsItemListener, TreeSelectionListener...{
    JTable table;
    JTree tree = null;
    DefaultMutableTreeNode root;
    Object name[] = ...{"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
    JComboBox yearList;
    CalendarBean cale;
    String rili[][];
    String item[] = ...{"2006","2007","2008","2009","2010"};
    JSplitPane split;
    int year = 2006;
    int month = 0;
    JScrollPane scrollTree,scrollTable;
    
    public CalenderFrame()...{
        cale = new CalendarBean();
        
        //添加年份列表
        yearList = new JComboBox();
        for(int k = 0 ; k < item.length;k++)
            yearList.addItem(item[k]);
        yearList.addItemListener(this);
        
        //添加月份树
        root = new DefaultMutableTreeNode(item[0]);
        tree = new JTree(root);
        add(new JScrollPane(tree) , BorderLayout.WEST);
        tree.addTreeSelectionListener(this);
        
        //设置年月及该月日历
        cale.setYear(year);
        cale.setMonth(month);
        rili = cale.getCalendar();
        table = new JTable(rili,name);
        
        //添加到窗口
        scrollTree = new JScrollPane(tree);
        scrollTable = new JScrollPane(table);
        split = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,true,scrollTree,scrollTable);
        add(yearList,BorderLayout.NORTH);
        add(split , BorderLayout.CENTER);
        updateYear(year);
        
        //设置窗口属性
        setSize(580,350);
        setVisible(true);
        split.setDividerLocation(0.5);
        validate();
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    
    //更新年份及月份树
    private void updateYear(int year)...{
        cale.setYear(year);
        root = new DefaultMutableTreeNode(String.valueOf(year));
        
        DefaultMutableTreeNode months[] = new DefaultMutableTreeNode[13];
        for(int i = 0 ; i <12;i++)...{
            months[i] = new DefaultMutableTreeNode("" + (i+1));
            root.add(months[i]);
        }
        split.remove(scrollTree);
        tree = new JTree(root);
        tree.addTreeSelectionListener(this);
        scrollTree = new JScrollPane(tree);
        split.add(scrollTree , JSplitPane.LEFT);
        split.setDividerLocation(0.5);
        validate();
    }
    
    //年份列表的监听器 
    public void itemStateChanged(ItemEvent e)...{
        String yearStr = yearList.getSelectedItem().toString().trim();
        int year = Integer.parseInt(yearStr);

        updateYear(year);
    }
    
    //树结点的监听器
    public void valueChanged(TreeSelectionEvent e)...{
        DefaultMutableTreeNode monthNode = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent();
        if(monthNode.isLeaf())...{
            month = Integer.parseInt(monthNode.toString().trim());
            cale.setMonth(month);
            rili = cale.getCalendar();
            split.remove(scrollTable);
            table = new JTable(rili,name);
            scrollTable = new JScrollPane(table);
            split.add(scrollTable, JSplitPane.RIGHT);
            split.setDividerLocation(0.5);
            validate();
            System.out.println("validate ok");
        }
        
    }
    
    public static void main(String args[])...{
        new CalenderFrame();
    }
}

本文出自:冯立彬的博客

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

一个java实现的简单日历,采用左树右列表的方式实现,具有参考意义相关推荐

  1. java课程设计数字日历,java课程设计简单日历.doc

    java课程设计简单日历.doc java课程设计报告题目:JAVA简易时间日历程序学生姓名:董兆军学号:2010314120专业班级:信101指导教师:李红强Java课程设计报告信101董兆军201 ...

  2. vue 左树右表增加左右拖拽的功能

    左树右表 是后台很常见的功能,当左树内容过长,可能就要考虑到拖拽的功能了 这里简单说一下我的实现思路, <div class='left-tree'> <div>......这 ...

  3. 基于JEECG-BOOT制作“左树右表”交互页面

    前置知识: 1.ant-design-vue 2.vue的slot概念 需求效果: 如上界面所示. 后端不改动,基于jeecg-boot生成的代码,前端自定义,分为左右两块,典型的"左树右表 ...

  4. JeePlus左树右表之 表单【右表】自动获取列表【左树 】中的id

    JeePlus 左树右表中表单[右表]自动获取列表[左树 ]中的id 左树右表中表单[右表]和列表[左树 ]中有个关联.新建[右表]的时候每次都需要手动选择[左树 ]中的数据.并进行绑定. 方法: 1 ...

  5. java实现家庭关系图_左孩子右兄弟二叉树实现家族家谱

    /* Name: 家谱 Description: 本项目对家谱管理进行简单的模拟,以实现查看祖先和子孙个人信息.插入家族成员.删除家族成员等功能. */ #include #include using ...

  6. css3实现 png 图片高亮自左到右过渡的方式 (一张图实现不遮住png的透明背景)

    文章目录 一.用一张图解释想要实现的效果. 二.思考:如何实现?实现的多种方式. 2.1.2图代码及实现效果 2.2.单图过滤实现效果 2.3.单图遮罩实现效果 一.用一张图解释想要实现的效果. 二. ...

  7. EAS F7 左树右表

    1.EAS基础资料F7调用: final KDBizPromptBox objPrmt = new KDBizPromptBox();F7BaseSelector selector = null;// ...

  8. Mac M1Pro芯片,新手从安装jdk到第一个Java程序详细指南(2022年10月)

    因为是一个新手,什么都不懂的,遇到一个命令行都要去查去理解,所以常见坑我都会说明,针对小白非常友好.()里的是扩展知识,可以不看 下文不包含下载常见的代码编辑器,可以做完二配置JDK环境,就去参考别的 ...

  9. 分离数字——从左到右分离和从右到左分离

    我们现在讨论分离数字的前提是这个数是一个四位数 eg:1234    从左到右分离:234 34 4 从右到左分离:123 12 1 1.从左到右分离 #include<bits/stdc++. ...

最新文章

  1. 系统集成项目管理工程师-变更管理笔记
  2. java学习笔记(十三)----IO操作
  3. Python多线程技术增加网站帖子的查看量
  4. Set集合设置变量自增长
  5. 听说92.8%的人答不对这道Python题,我不信,后来我信了!真有趣
  6. 接纳强迫,不要过于追求完美,允许自己慢下来,扎实的学习
  7. mac安装mysql的两种方法(含配置)
  8. python安全性_关于python安全性的问题
  9. HDU3376 Matrix Again——最大费用最大流
  10. 史上最全APP推广渠道,看看你最熟悉哪一种
  11. html页面整体偏移了怎么办,html2canvas生成的图片偏移不完整的解决方法
  12. 记账后,如何查看、修改或删除不需要的收支
  13. Linux安装Oracle报Checking operating system version must be redhat-3, SuSE-9, redhat-4, UnitedLin
  14. php redis 删除key 通配符,php redis 批量删除keys的方法
  15. 原生Ajax五个基本步骤(面试题)
  16. 实验三+163+张玉洁
  17. Proguard 常用规则
  18. 实现Python爬虫的思路、原理
  19. Human-level control through deep reinforcement learning
  20. mysql一行受影响是什么意思_行受影响 是什么意思

热门文章

  1. 鸿蒙轻内核M核源码分析:数据结构之任务就绪队列
  2. 释放千行百业数据价值,华为云DAYU有一套
  3. 仅4步,就可通过SQL进行分布式死锁的检测与消除
  4. SpringBoot写后端接口,看这一篇就够了!
  5. 【华为云技术分享】华为专家亲述:如何转型搞 AI?
  6. 华为云落地敏捷+DevOps,助力大企业高效能
  7. 解析几何复习(一)向量代数
  8. R语言学习笔记(八)判别分析
  9. 基于ViSual Studio 2013 + MYSQL9_5302 + Navicat for MySQL9_5302的ATM自动存取款系统
  10. zookeeper3.5.x版本启动报错java.io.IOException: No snapshot found, but there are log entries.解决