`
wjheye
  • 浏览: 83752 次
  • 性别: Icon_minigender_1
  • 来自: 河南
社区版块
存档分类
最新评论

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

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

直接将两个文件放在一起就可以运行。
/* File CalendarBean.java
*  author:***
*  Date:2007-12-8 23:37
*  返回某年某月的日历的字符串数组
*/
import java.util.Calendar;
public class CalendarBean...{
    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
*  一个简单的日历
*/
import javax.swing.*;
import javax.swing.tree.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.event.*;

public class CalenderFrame extends JFrame implements ItemListener, 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();
    }
}


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/fenglibing/archive/2007/12/22/1958478.aspx
分享到:
评论

相关推荐

    创建左树右表基础资料1

    4. 显示组别字段由于此基础资料为左树右表基础资料,所以在基础资料的编辑界面上需要显示一个组别字段,需要通过如下图的操作,即可完成组别字段的添加。 5. 修改描述字段的文本控件描述控件在这些控件中是输入文本...

    左树右对话框

    在这样的界面中,左边通常展示一个树形控件(Tree View Control),右边则显示与选定树节点相关的详细信息或操作选项,这种布局方式有助于用户高效地浏览和管理大量数据。 首先,我们来看一下提供的文件列表: 1. ...

    左树节点动态拖到右侧面板

    本文将详细讲解如何利用JavaScript和ZTree实现一个功能,允许用户将左侧面板中的树节点动态拖放到右侧面板,并在右侧面板中动态加载相应的div和样式。 首先,ZTree是一个强大的JavaScript插件,它基于jQuery,主要...

    Vue.js知识点总结 (element框架混用 制作一个左树右表布局)

    文章目录element框架混用一,安装二,引入使用找到文件并编辑使用(1)第一,加入name名作为组件导出的索引名,我们这里起名为ele(2)在App.vue下导出(3)运行(4)用CSS美化设计三,完成 &gt;&gt;&gt; element框架混用 ...

    左侧树形菜单+右侧页面+sql2000

    在IT领域,构建一个具有左侧树形菜单和右侧动态页面的应用是常见的设计模式,尤其在管理界面中。这种设计能够高效地展示和操作层级结构的数据,使得用户可以方便地导航和交互。在这个特定的项目中,标题“左侧树形...

    Vue代码示例,左边Tree,右边对Tree节点配置子表多条数据

    在本示例中,我们探讨的是一个基于Vue.js的前端应用,它展示了如何结合Tree组件和子表(Subtable)来实现数据的增删改查功能。Vue.js是一款流行的前端框架,它允许开发者构建可复用和响应式的用户界面。在这个场景中...

    学生管理 mfc课设

    建立一个默认的单文档应用程序采用多视图编写一个学生成绩管理系统。左侧为树视图,各级节点分别为学校名称、学院名称、专业名称;右侧为列表视图,显示学生的基本信息和成绩。 编程要求: 设计一个学生成绩管理系统...

    Layui树形表格treetable

    在这些组件中,树形表格(TreeTable)是一个功能强大的工具,尤其适用于展示具有层级关系的数据。在本篇文章中,我们将深入探讨如何在LayUI中实现和使用TreeTable。 首先,LayUI的TreeTable是在基础的数据表格...

    struts+ajax+sql2000技术制作的动态显示左树菜单

    总结来说,“动态左树菜单”项目利用Struts处理请求和控制流程,Ajax实现页面的异步更新,SQL Server 2000提供数据存储与检索,共同构建了一个高效、响应式的Web应用。项目中的toyotaquery可能是具体实现的业务模块...

    vue左侧菜单,树形图递归实现代码

    本例中,我们看到一个使用Vue实现的多级树形菜单,它主要用于后台管理系统的侧边栏。让我们详细解析一下这个实现过程。 首先,我们需要理解数据结构。在示例中,`theModel`是一个包含多个菜单项的对象数组,每个...

    金蝶云苍穹列表界面如何以树形结构在表格中展示业务数据

    在金蝶云苍穹中,为了更好地管理和展示复杂的企业业务数据,有时需要将数据以树形结构的方式在列表界面中呈现。这种方式有助于用户直观地理解数据之间的层级关系,提高工作效率。 首先,要实现树形结构的展示,我们...

    EAS系统F7控件树形显示

    在IT行业中,EAS(Enterprise Application System)系统通常指的是企业级应用系统,它是一个整合了各种业务流程和信息系统的综合平台。"EAS系统F7控件树形显示"这个主题涉及的是在EAS系统中,如何使用F7控件来实现...

    树形菜单和结合表格的树形菜单

    TableTree4J_V1.2RE是一个专门用于实现这种功能的JavaScript库。从库名可以看出,它可能主要针对Java开发者,提供了在表格中展示树形数据的功能。尽管名称中包含"J",但根据描述,这个库也支持JavaScript环境。它...

    JAVA后台转换成树结构数据返回给前端的实现方法

    "JAVA后台转换成树结构数据返回给前端的实现方法" 在软件开发中,树形结构数据是一种常见的数据结构,它广泛应用于各种应用程序中,如文件系统、组织结构、菜单系统等。然而,在实际开发中,我们经常会遇到如何将...

    Ext左树有表格 增删改查

    总的来说,"Ext左树有表格 增删改查"是一个常见的UI设计模式,它结合了ExtJS的树形组件和表格组件,提供了灵活的数据展示和操作方式。通过合理配置和事件绑定,可以实现功能丰富的管理界面。在实际项目中,还需要...

    ERP软件左树菜单图标

    用于开发左树菜单程序专用图标,使界面变得更加友好。

    基于vuejs实现树形表格的封装vuetreetable

    本教程将详细介绍如何基于Vue.js实现一个自定义的树形表格组件——vue-tree-table。 首先,我们需要了解Vue.js的基本概念。Vue.js是一个渐进式框架,它的核心库专注于视图层,易于学习并能与现有项目集成。对于树形...

    layui dtree树形结构

    总的来说,layui dtree是layui框架的一个强大工具,能帮助开发者构建具有树形结构的交互界面,提高用户的操作体验。无论是用于组织结构的展示、目录层级的选择还是权限管理,layui dtree都能提供高效且直观的解决...

    树机构的表结构实例

    来自数据设计机构树的一个例子,主要方便运维人员为了建设机构树而进行的一种设计

    bootstrap树形表格js插件demo

    总的来说,这个“bootstrap树形表格js插件demo”提供了一个强大的工具,用于在Bootstrap环境中以交互方式展示分层数据。开发者可以根据实际需求调整和扩展这个插件,例如添加搜索、排序和过滤功能,或者改变默认的...

Global site tag (gtag.js) - Google Analytics