java 日历 calendar的制作问题

(最新修改——显示节日)----Java写出来的日历(有显示农历) - Java综合 - Java - ITeye论坛
(最新修改——显示节日)----Java写出来的日历(有显示农历)
& 上一页 1
锁定老帖子
精华帖 (0) :: 良好帖 (0) :: 新手帖 (4) :: 隐藏帖 (1)
等级: 初级会员
来自: 海上漂
发表时间:&&
最后修改:
前言:我总是喜欢看日历,看多了突然萌发出来自己想做个日历出来的想法。本来自己是个程序员(java),目前上班空闲时间也算多;于是从网络上看了看有关怎样用java来实现日历的相关示例及文章,自己就开始动手操作了!不过现在做出来还是有点漏洞:就是程序初始化运行之后,系统当前日期的颜色突出显示问题;当我更换月份、或者是年份后再回到当前的时间,突出显示当前(今天的)时间的颜色会随鼠标的移动而消失;这个让我不解,试了好多中方式都没弄好!希望javaeye的高手们看了后,能帮我解决这个问题……好了废话不多说,马上把源代码贴出。。。(注:Java日历.rar附件是用exe4j打包出来的exe可执行文件,如本机安装了JDK或是有不是安装版JDK的环境变量;都可以直接双击运行查看效果)
package org.
import java.awt.BorderL
import java.awt.C
import java.awt.C
import java.awt.C
import java.awt.D
import java.awt.F
import java.awt.P
import java.awt.T
import java.awt.event.ItemE
import java.awt.event.ItemL
import java.awt.event.MouseE
import java.awt.event.MouseMotionL
import java.text.ParseE
import java.text.SimpleDateF
import java.util.C
import java.util.GregorianC
import javax.swing.ImageI
import javax.swing.JComboB
import javax.swing.JF
import javax.swing.JL
import javax.swing.JP
import javax.swing.JScrollP
import javax.swing.JT
import javax.swing.SwingC
import javax.swing.UIM
import javax.swing.table.DefaultTableCellR
作 者:xfeng
* @version 创建时间: 上午11:19:15
@SuppressWarnings("serial")
class DateWin extends JFrame implements ItemListener {
private Calendar cd =
private int tcr_
private int tcr_
private int listen_tcr_
private int listen_tcr_
private boolean is_in_listener =
private String xingqi =
private JT
private Object date[][];
private Object name[] = { "日", "一", "二", "三", "四", "五", "六" };
private JComboBox year = new JComboBox();
private JComboBox month = new JComboBox();
private JLabel label1;
private JLabel label2;
private JLabel label3;
private JLabel label4;
private JLabel label5;
private JP
private JPanel rights_panel = forAddEndPanel();
static SimpleDateFormat chineseDateFormat = new SimpleDateFormat(
"yyyy年MM月dd日");
protected void toCenter() {
Toolkit kit = Toolkit.getDefaultToolkit(); // 定义工具包
Dimension screenSize = kit.getScreenSize(); // 获取屏幕的尺寸
int screenWidth = screenSize.width / 2; // 获取屏幕的宽
int screenHeight = screenSize.height / 2; // 获取屏幕的高
int height = this.getHeight();
int width = this.getWidth();
setLocation(screenWidth - width / 2, screenHeight - height / 2);
public void getDateWin(String s) {
ImageIcon title = new ImageIcon("images/title_xiong.gif");
setIconImage(title.getImage());
setTitle(s);
setSize(410, 202);
toCenter();
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);
int startYear=1900;
int endYear=2050;
cd=Calendar.getInstance();
int sysYear=cd.get(Calendar.YEAR);
for (int i = startY i & endY i++) {
int years =
if(endYear==sysYear){
endYear+=10;
year.addItem(years);
for (int i = 1; i & 13; i++) {
month.addItem(i);
label1 = new JLabel("当前查看:公历 ");
label2 = new JLabel("年");
label3 = new JLabel("月");
panel = new JPanel();
panel.add(label1);
panel.add(year);
panel.add(label2);
panel.add(month);
panel.add(label3);
Container con = getContentPane();
con.setLayout(new BorderLayout());
con.add(panel, BorderLayout.NORTH);
con.add(rights_panel, BorderLayout.SOUTH);
cd = new GregorianCalendar();
Calendar cal = Calendar.getInstance();
years = cd.get(Calendar.YEAR);
year.setSelectedItem(years);
months = cd.get(Calendar.MONTH) + 1;
month.setSelectedItem(months);
cd.set(Calendar.DATE, 1);
int dateNumber = cd.getActualMaximum(Calendar.DATE);
int firstDay = cd.get(Calendar.DAY_OF_WEEK) - 1;
int count = 1;
int is_today = cal.get(Calendar.DATE);
date = new Object[6][7];
Lunar lunar =
for (int i = 0; i & 6; i++) {
for (int j = 0; j & 7; j++) {
if (count == is_today) {
tcr_column =
if (count & dateNumber)
if ((i * 7 + j) & firstDay)
String today = years + "年" + months + "月" + count + "日";
Calendar currentDay = Calendar.getInstance();
currentDay.setTime(chineseDateFormat.parse(today));
} catch (ParseException e) {
e.printStackTrace();
lunar = new Lunar(currentDay);
String currentDate = lunar.toString();
int startIndex = currentDate.length() - 2;
String showMonth = currentDate.substring(0, startIndex);
String showDay = currentDate.substring(startIndex);
if (showDay.equals("初一")) {
date[i][j] = count + "/" + showM
date[i][j] = count + "/" + showD
final String cyclical = "星期" + name[tcr_column] + " 农历"
+ lunar.cyclical() + "年";
final String animalsYear = "【" + lunar.animalsYear() + "年】";
label4 = new JLabel(cyclical);
label5 = new JLabel(animalsYear);
panel.add(label4);
panel.add(label5);
table = new JTable(date, name);
table.setRowHeight(15);
table.setEnabled(false);
// 设置不能重新调整列宽
table.getTableHeader().setResizingAllowed(false);
// 设置不能重新排序各列
table.getTableHeader().setReorderingAllowed(false);
con.add(new JScrollPane(table), BorderLayout.CENTER);
// 标识系统当前时间高亮显示
DefaultTableCellRenderer tcr = new DefaultTableCellRenderer() {
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus,
int row, int column) {
Component cell = super.getTableCellRendererComponent(table,
value, isSelected, hasFocus, row, column);
if (row == tcr_row && column == tcr_column
&& cell.isBackgroundSet()) {// 设置变色的单元格
cell.setBackground(Color.red);
cell.setBackground(Color.WHITE);
// 设置表格单元格内容居中显示
tcr.setHorizontalAlignment(SwingConstants.CENTER);
for (int i = 0; i & name. i++) {
table.getColumn(name[i]).setCellRenderer(tcr);
year.addItemListener(this);
month.addItemListener(this);
foMmouseListener(true);
con.validate();
validate();
public void itemStateChanged(ItemEvent e) {
Calendar cal = Calendar.getInstance();
years = Integer.parseInt(year.getSelectedItem().toString());
months = Integer.parseInt(month.getSelectedItem().toString()) - 1;
cd = new GregorianCalendar(years, months, 1);
int dateNumber = cd.getActualMaximum(Calendar.DATE);
int firstDay = cd.get(Calendar.DAY_OF_WEEK) - 1;
int count = 1;
int is_year = cal.get(Calendar.YEAR);
int is_month = cal.get(Calendar.MONTH);
int is_day = cal.get(Calendar.DAY_OF_MONTH);
date = new Object[6][7];
Lunar lunar =
for (int i = 0; i & 6; i++) {
for (int j = 0; j & 7; j++) {
if (years == is_year && months == is_month && count == is_day) {
is_in_listener =
listen_tcr_row =
listen_tcr_column =
xingqi = "星期" + name[tcr_column] + " ";
if (count & dateNumber)
if ((i * 7 + j) & firstDay)
String today = years + "年" + (months + 1) + "月" + count
Calendar currentDay = Calendar.getInstance();
currentDay.setTime(chineseDateFormat.parse(today));
} catch (ParseException ex) {
ex.printStackTrace();
lunar = new Lunar(currentDay);
String currentDate = lunar.toString();
int startIndex = currentDate.length() - 2;
String showMonth = currentDate.substring(0, startIndex);
String showDay = currentDate.substring(startIndex);
if (showDay.equals("初一")) {
date[i][j] = count + "/" + showM
date[i][j] = count + "/" + showD
panel.remove(label4);
panel.remove(label5);
final String cyclical = "农历" + lunar.cyclical() + "年";
final String animalsYear = "【" + lunar.animalsYear() + "年】";
if (years != is_year || months != is_month) {
label4 = new JLabel((xingqi == null ? "" : xingqi) + cyclical);
label5 = new JLabel(animalsYear);
panel.add(label4);
panel.add(label5);
table = new JTable(date, name);
table.setRowHeight(15);
table.setEnabled(false);
// 设置不能重新调整列宽
table.getTableHeader().setResizingAllowed(false);
// 设置不能重新排序各列
table.getTableHeader().setReorderingAllowed(false);
getContentPane().removeAll();
getContentPane().setLayout(new BorderLayout());
getContentPane().add(panel, BorderLayout.NORTH);
getContentPane().add(rights_panel, BorderLayout.SOUTH);
getContentPane().add(new JScrollPane(table), BorderLayout.CENTER);
// 标识系统当前时间高亮显示
DefaultTableCellRenderer tcr = new DefaultTableCellRenderer() {
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus,
int _row, int _column) {
Component cell = super.getTableCellRendererComponent(table,
value, isSelected, hasFocus, _row, _column);
if (is_in_listener && _row == listen_tcr_row
&& _column == listen_tcr_column
&& cell.isBackgroundSet()) {// 设置变色的单元格
cell.setBackground(Color.red);
is_in_listener =
cell.setBackground(Color.white);
// 设置表格单元格内容居中显示
tcr.setHorizontalAlignment(SwingConstants.CENTER);
for (int i = 0; i & name. i++) {
table.getColumn(name[i]).setCellRenderer(tcr);
foMmouseListener(false);
getContentPane().validate();
validate();
private void foMmouseListener(final boolean is_in_listener) {
table.addMouseMotionListener(new MouseMotionListener() {
public void mouseDragged(MouseEvent e) {
public void mouseMoved(MouseEvent e) {
Point point = e.getPoint();
int x = table.rowAtPoint(point);
int y = table.columnAtPoint(point);
if (x != row || y != column) {
Object tip = table.getValueAt(row, column);
if (tip != null) {
String tip_str = tip.toString();
String date_yangli_tip = tip_str.substring(0, tip_str
.lastIndexOf("/"));
StringBuffer tipText = new StringBuffer();
StringBuffer move_currentDay_str = new StringBuffer();
move_currentDay_str.append(years);
move_currentDay_str.append("年");
if (is_in_listener) {
move_currentDay_str.append(months);
move_currentDay_str.append((months + 1));
move_currentDay_str.append("月");
move_currentDay_str.append(date_yangli_tip);
move_currentDay_str.append("日 ");
Calendar move_currentDay = Calendar.getInstance();
move_currentDay.setTime(chineseDateFormat
.parse(move_currentDay_str.toString()));
} catch (ParseException ex) {
ex.printStackTrace();
Lunar move_lunar = new Lunar(move_currentDay);
tipText.append(move_currentDay_str);
tipText.append("星期");
tipText.append(name[column] + " ");
tipText.append("农历");
tipText.append(move_lunar.toString());
table.setToolTipText(tipText.toString());
table.setToolTipText("");
private JPanel forAddEndPanel() {
JPanel rights_panel = new JPanel();
JLabel contact_label = new JLabel("联系方式:xiong_");
JLabel design_name_label = new JLabel("作者:Design By xfeng ");
contact_label.setFont(new Font("宋体", 0, 12));
design_name_label.setFont(new Font("宋体", 0, 12));
contact_label.setForeground(Color.blue);
design_name_label.setForeground(Color.blue);
contact_label.setPreferredSize(new java.awt.Dimension(206, 13));
rights_panel.add(contact_label);
rights_panel.add(design_name_label);
return rights_
* @param args
public static void main(String[] args) {
/*----------设置成系统风格---------*/
String laf = UIManager.getSystemLookAndFeelClassName();
UIManager.setLookAndFeel(laf);
} catch (Exception e) {
e.printStackTrace();
DateWin dateWin = new DateWin();
dateWin.getDateWin("Java日历
- 【xfeng】");
农历显示的类文件是从网上找到的,在这里感谢那位提供者!附件MainCal.rar中的Lunar.java就是提供显示农历的java类;解压MainCal.rar在Myeclipse中直接运行MainDate.java类,也可以查看效果…
注:根据网友回馈的bug,【农历显示错误】我做了一下修改;上面主程序日历代码也有所变更,想查看更改后的效果:请下载“附件更改”的附件,两个附件是对应之前的;源代码就不贴出来了,请自己看附件吧……
(147.5 KB)
下载次数: 1165
下载次数: 749
描述: MainCal.rar附件更改
下载次数: 353
(173.3 KB)
描述: Java日历.rar附件更改
下载次数: 514
myloveiscomealone
等级: 初级会员
来自: 北京
发表时间:&&
写得很不错.我记得跟你同学的时候写过一个坦克大战的游戏.呵呵.好多东西,好多包我都没有再用了.看了一下,回忆很多!
请登录后投票
等级: 初级会员
来自: 上海
发表时间:&&
看到好多都没用到过,值得看看.
我是JAVA初学者,过来学习学习....
请登录后投票
string2020
等级: 初级会员
来自: 广州
发表时间:&&
那个EXE可执行文件,我双击,怎么打不开。。
请登录后投票
IcedCoffee
等级: 初级会员
来自: 上海
发表时间:&&
请登录后投票
dongisland
等级: 初级会员
来自: 北京
发表时间:&&
LZ,我测试你说的那个问题没有发现有BUG啊,再试试吧,我试的还可以。
意见:要是系统时间换的话,软件时间也跟着换就最好不过了,意见而已。
请登录后投票
等级: 初级会员
来自: 北京
发表时间:&&
写个与GUI无关的功能对象更好.
GUI层面直接掉用相应的方法即可.
请登录后投票
等级: 初级会员
来自: 杭州
发表时间:&&
万年历不准
请登录后投票
等级: 初级会员
来自: 杭州
发表时间:&&
用的是哪个版本的jdk啊?
请登录后投票
love_smallbear
等级: 初级会员
来自: 北京
发表时间:&&
LZ和我本家人啊..
请登录后投票
& 上一页 1
跳转论坛:移动开发技术
Web前端技术
Java企业应用
编程语言技术用Java Swing作一个日历控制程序_网易科技
用Java Swing作一个日历控制程序
用微信扫码二维码
分享至好友和朋友圈
日期是最基本的数据形式之一,因此很多语言或者数据库都提供了对日期的支持,或内置或提供这一类的库。Java也不例外;Java的应用编程接口提供了以跨平台独立语言的方式描述,计算,对比,显示以及便携式分析日期。在这篇文章里,我要讲讲关于Swing的自定义控制,允许你在视觉上获取时间信息而不是用敲命令的方式。用这种方法,你可以避免无效的时间信息,让你的使用者以视觉的方式得到享受。
Java中的日期
Java描述日期和时间的方法使用传统的Date命令或者Java的一些子库。不管它的名字是什么,日期的类并没有普通意义上的日期的概念(日,月,年等等)技术上讲,它仅仅是从日 00:00:00 GMT开始百万分之一秒的累加的一个结果。尽管这些关于日期的类有各种各样的处理日期的方法,这都是不够的。
为了方便的解决日期问题, JDK 1.1 介绍了一个抽象的类java.util.Calendar。具体的计算日期的子类都会根据日历系统使用一个指向特定日期的指针。这是因为日历系统历来就是有很多种方法来计算自己的日期(比如阳历,罗马历,阴历)。
Java应用编程接口提供了名为java.util.GregorianCalendar的类来根据阳历系统处理日期信息。
最终,名为java.text.DateFormat的类就是一种抽象的处理格式解释日期种类的独立于语言之外的方式。这种方式依靠那些惯例,法则,以及已知的语言要求的位置运行着。名为DateFormat的具体的子类进行实际的工作。例如,名为java.text.SimpleDateFormat的子类允许你根据现有的方式分析或者设定一个日期的格式。
总体来说,这三个最基本的类(Date, Calendar, 以及 DateFormat)提供了强大的灵活的处理日期的体系。也许开始看来会有些疑惑,但你一旦明白了,你就会看到这样的结构是十分有意义的,并且在其背后有很强的逻辑背景。(看看JDK的API文档,你就会得到根多的文档和例子)
定做的日期控制
尽管,Java提供了你可以对日期数据操作的方法,如果让你处理三个不同的类,看起来也有些麻烦。有时你需要使用很多方法,利用很多实体来完成一个简单的任务。除那些之外,Swing并不能提供进入日期的组件。当然,如果使用标准的控制如text box也不难完成。不过,日期在应用中是如此的常见,以至于我们常常一遍一遍地写相同的代码,输入,分析,检查时间。
基于以上几点原因考虑,我建立了一个简单的自定义的控制,你可以使用它来访问日期数据。基本上说,这就是一个显示日期的标准的按钮 (请看图A)。
自定义日期控制
当你点击之后,会弹出一个日期对话框,并允许你选择一个新的日期 (请看表格B)。
点击OK键完成一次更新。
  日历对话框弹出   这样做简化了应用逻辑,因为使用者不会访问到一个无效的日期。并且由于对话框看上去像一个日历,这样做更有利于使用者掌握星期几这个非常有用的日期信息。   自定义的按键控制在名为DateButton的类 (列表A)中描述。使用起来非常简明—仅仅是列举一个名为DateButton的实体,并且像加载普通的控制一样把它加到一个方框中。    按键就是表示的日期的实体,执行起来就像键入“date”命令的反映一样。这就意外着只要名为PropertyChangeListener的时间寄存器发生变化你就可以设置并得到时间。表格 A说明了名为 DateButton 的应用编程接口,并且 列表B是一个使用的例子。   表格 A
  自定义的按键应用编程接口是十分简单的。你可以利用其中的一个构造器来建立一个例子,并且正确地获取或设置时间信息。需要注意的是这是一个标准的按键,也因此它继承了很多标准按键的方式,包括注册的方式。
DateButton(Date)
建立一个新的名为DateButton的类,用来初始化日期。
DateButton( )
建立一个新的名为DateButton的类,用来初始化系统日期。
getDate( )
得到正确的日期值。
setDate(Date)
设置正确的日期值。  自定义按键控制的应用编程接口   日历对话框   除了自定义一个名为DateButton的控制器之外,我们还要建立一个自定义的对话框,名为CalendarChooser (参照 列表 C), 你可以自由地从列表中选择月份,年份或日子 (参照表格B)。尽管它是根据名为Datebutton控制自动显示的,你也可以用你自己的方法来使用它。建立一个名为 CalendarChooser的类,使用一个选好的方式来运行它(参照表格B完成应用编程接口)。   表格 B
使用日历对话框选择一个日期是非常简单的。使用一个构件器来建造一个对话框的实体,使用其中的一种方法来选择日期。
DateChooser(Dialog, title)
建立一个新的名为DateChooser的类,并且赋予其标题和对话信息。
DateChooser(Dialog)
建立一个新的名为DateChooser的类,并且赋予其对话信息。
DateChooser(Frame, title)
建立一个新的名为DateChooser的类,并且赋予其框架和对话信息。
DateChooser(Frame)
建立一个新的名为DateChooser的类,并且赋予其框架。
select(Date)
显示一个已选好日期的对话框,你可以任意改变日期;返回选择好的日期。如果你取消对话框则返回一个空值,并关闭对话框。
与上述相同,用系统日期代替选择的日期。  日历对话框应用编程接口   这个名为DateChooser的类,有些复杂。我不得不对每个月的日历建立一个新的控制器,因为这些标准控制里面没有我需要的。另一方面讲,这也说明了敬爱能力一个新的控制是多么地容易,靠鼠标和键盘地互动就能完成。   注意到在年份选择列表中年份的显示,是由名为FIRST_YEAR和 LAST_YEAR的常数预先决定的。同样地,其它常数也决定一些对话框视觉方面(如颜色)的效果。稍加设计,自由地修改这些参数并不困难。   同样地,非常重要的一点,名为DateChooser的类和名为DateButton的类都是以英式(月份和星期几)或美式日期格式定义的。由于这些也是用常数来定义的,所以修改起来也十分简单。如果你想修改的话,这也是完全和语言无关的。
本文来源:Blog
责任编辑:王晓易_NE0011
用微信扫码二维码
分享至好友和朋友圈
加载更多新闻
热门产品:   
:        
:         
热门影院:
阅读下一篇
用微信扫描二维码
分享至好友和朋友圈Java万年历,输入年月获取改年月日历表_Java教程_动态网站制作指南
Java万年历,输入年月获取改年月日历表
来源:人气:860
万年历,输入年月获取改年月日历表
1 //输入年份和月份,打印出这个月的日历表
1.日是星期一
2.计算输入的年份距离1900年有多少天再计算当年1月1日距这个月有多少天
3.总天数%7得出从星期几开始
注:计算机中的时间最小到1900年,此外UNIX系统认为日0点是时间纪元。
so,在本程序中不考了1900年以前的年份了。有兴趣的可以自己研究下。
9 */ 10 import java.util.S 11 class Calender{ 12
public static void main(String[] args){ 14
//打印输出 20
public static void print(){ 21
Scanner sc = new Scanner(System.in); 22
System.out.println("请输入年份:"); 23
int year = sc.nextInt(); 24
System.out.println("请输入月份(1~12):"); 25
int month = sc.nextInt(); 26
int days = getDays(year, month);//getDays方法详细请往下看 28
//days+1:day是总天数,输入月份的总天数只是这个月之前的天数, 29
//加上1变为这个月开始的第一天 30
int week = days%7==0?1:days%7+1;//开始的第一天是星期几 31
System.out.println("日\t一\t二\t三\t四\t五\t六"); 32
//输出第一行(第一个星期)空出来部分 34
for(int i=1; i&= i++){ 35
System.out.print(" \t"); 36
//输出第一行(第一个星期)各天 39
for(int i=1; i&=7- i++){ 40
System.out.print(i+"\t"); 41
System.out.println(); 44
//1~12月的个月天数 46
int monthDay = 0; 47
switch(month){ 48
case 2: 49
if(year%4==0&&year%100!=0 || year%400==0 ){ 50
monthDay=29; 51
monthDay=28; 53
case 4: 57
case 6: 58
case 9: 59
case 11: 60
monthDay=30; 61
default : 64
monthDay=31; 65
//输出剩下的日期,从第二周开始了,所以是8-week 69
for(int i=8- i&=monthD i++){ 70
System.out.print(i+"\t"); 72
//每七天换一行则当日期能整除7就换行 74
if((i+week)%7==0){ 75
System.out.println(); 76
计算当年当月的距的总天数 84
public static int getDays(int year, int month){ 86
//判断这年是闰年或者平年,得到年的总天数 87
int day1=0, day2=0; 88
for(int i=1900; i& i++){ 90
if(i%4==0&&i%100!=0 || i%400==0){ 91
day1+=366; 92
day1+=365; 94
//得到月的总天数 98
for(int i=1; i& i++){ 99
switch(i){100
case 2:101
if(year%4==0&&year%100!=0 || year%400==0 ){102
day2+=29;103
day2+=28;105
case 4:109
case 6:110
case 9:111
case 11:112
day2+=30;113
default :116
day2+=31;117
return day1+day2;122 123
优质网站模板博客分类:
//说什么都没有例子直观,这是个比较简单的日历日程,附件为效果图、代码效果和需要引用的js与css文件
package com.kinth.oa.daily.
import java.io.IOE
import java.net.URLD
import java.text.ParseE
import java.text.SimpleDateF
import java.util.D
import java.util.L
import java.util.M
import javax.servlet.http.HttpServletR
import javax.servlet.http.HttpServletR
import net.sf.json.JSONA
import net.sf.json.JsonC
import org.apache.struts.action.ActionF
import org.apache.struts.action.ActionF
import org.apache.struts.action.ActionM
import com.gdcn.bpaf.common.base.BaseStrutsA
import com.gdcn.bpaf.common.helper.BeanU
import com.gdcn.bpaf.common.helper.WebH
import com.gdcn.bpaf.common.taglib.SplitP
import com.gdcn.bpaf.security.model.LogonVO;
import com.kinth.common.helper.GUIDH
import com.kinth.common.helper.PagerL
import com.kinth.oa.daily.action.form.PerScheduleCategoryF
import com.kinth.oa.daily.action.form.PerScheduleF
import com.kinth.oa.daily.model.PerS
import com.kinth.oa.daily.model.PerScheduleC
import com.kinth.oa.daily.service.IPerScheduleS
import com.kinth.oa.official.helper.JsonDateValueP
* &p&Title 个人日程action&/p&
* &p&Copyright: Copyright (c) 2012&/p&
* &p&@date :
public class PerScheduleAction extends BaseStrutsAction{
private IPerScheduleService perscheduleS
* 以月历模式查看个人日程
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
public ActionForward toJson(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws IOException {
response.setCharacterEncoding("utf-8");
String userId=WebHelper.getLogon(request).getLogonid();
String userName=WebHelper.getLogon(request).getUsername();
String hql = "FROM PerSchedule a where a.userId = "+"'"+userId+"'";
List&PerSchedule& list=perscheduleService.queryPerSchedules(hql);
//移除同一天的日程事件
for (int i=0;i&list.size();i++) {
if(request.getParameter("index")!=null){
for (int j = list.size() - 1; j & j--) {
if (list.get(j).getStartTime().toString().substring(0, 10).equals(list.get(i).getStartTime().toString().substring(0, 10))) {
list.remove(j);
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String str = list.get(i).getStartTime().toString().substring(0, 19);
list.get(i).setStartTime(sf.parse(str));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
JSONArray json = JSONArray.fromObject(list);
String resultStr = json.toString();
response.getWriter().write(resultStr);
response.getWriter().flush();
response.getWriter().close();
} catch (IOException e) {
e.printStackTrace();
@SuppressWarnings("unchecked")
protected void writeJSON(HttpServletRequest request,HttpServletResponse response,Map map)throws Exception{
//获得json的配置
JsonConfig config=new JsonConfig();
//设置javabean中日期转换时的格式
config.registerJsonValueProcessor(Date.class,
new JsonDateValueProcessor("yyyy-MM-dd HH:mm:ss"));
Object o = JSONArray.fromObject(map,config);
String result = o==null?"":o.toString();
response.setContentType("application/charset=UTF-8");
response.setCharacterEncoding("utf-8");
response.setHeader("Charset", "utf-8");
response.setHeader("Cache-Control", "no-cache");
response.getWriter().print(result);
public IPerScheduleService getPerscheduleService() {
return perscheduleS
public void setPerscheduleService(IPerScheduleService perscheduleService) {
this.perscheduleService = perscheduleS
&%@ page contentType="text/ charset=GBK" language="java"%&
&%@ page isELIgnored="false"%&
&link href="&%=baseURL%&/frame/css/style.css" rel="stylesheet" type="text/css" /&
&title&日常业务-个人日程&/title&
&title&日程&/title&
&link type="text/css" rel="stylesheet" href="&%=baseURL %&/kinth/officialCommon/css/jquery.ui.all.css"/&
&link rel='stylesheet' href='&%=baseURL%&/frame/css/fullcalendar.css'
&link rel='stylesheet' href='&%=baseURL%&/frame/css/fullcalendar.print.css'
media='print' /&
&script type="text/javascript" src="&%=baseURL %&/kinth/officialCommon/js/jquery.js"&&/script&
&script type="text/javascript" src="&%=baseURL %&/kinth/officialCommon/js/jquery-ui.custom.js"&&/script&
&script type="text/javascript" src="&%=baseURL%&/frame/JS/fullcalendar.min.js"&&/script&
&style type='text/css'&
margin-left: 200
text-align:
font-size: 18
font-family: "Lucida Grande",Helvetica,Arial,Verdana,sans-
#calendar {
width: 900
height: 800
&script type="text/javascript"&
$(document).ready(function() {
var date = new Date();
var d = date.getDate();
var m = date.getMonth();
var y = date.getFullYear();
$('#calendar').fullCalendar({
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
theme:true,
monthNames: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"],
monthNamesShort: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"],
dayNames: ["周日", "周一", "周二", "周三", "周四", "周五", "周六"],
dayNamesShort: ["周日", "周一", "周二", "周三", "周四", "周五", "周六"],
today: ["今天"],
buttonText: {
today: '今天',
month: '月',
week: '周',
editable: false,
events:function(start, end, callback) { //在日历中的天显示相应日程
var urlR = baseURL+"/toJsonForCalandar.do";//后台查询日程,返回json格式
url: urlR,
cache:false,
success:function(data) {
var events = [];
var info = eval(data);
for (var i = 0; i & info. i++) {
var ev = info[i];
var title = ev.
if(ev.allDay=='true'){
var evtstart=formatJson(ev.startTime.time);
var evtend=formatJson(ev.endTime.time);
events.push({
//设置在日历中的天显示相应日程的样式
title:title,
start:evtstart,
end:evtend,
backgroundColor:'#34c9df',
callback(events);
},eventClick: function(calEvent, jsEvent, view) {
//点击日程事件
window.location.href=baseURL+"/kinth/daily/perschedule/perscheduleByCalMain.jsp";
},dayClick:function(date, allDay, jsEvent, view){ //点击天事件
//$(this).css({color: "red", background: "blue" });
//$(this).removeClass("ui-widget-content");
window.location.href=baseURL+"/listCategory.do?appType=HDOA_GRRC";
&script type="text/javascript"&
//格式化时间函数,此函数为了处理json格式中带date类型数据的
function formatJson(time)
var jsonDate=new Date(parseInt(time));
var result = jsonDate.format("yyyy-MM-dd hh:mm:ss");
Date.prototype.format = function(format){
"M+" : this.getMonth()+1, //month
"d+" : this.getDate(),
"h+" : this.getHours(),
"m+" : this.getMinutes(), //minute
"s+" : this.getSeconds(), //second
"q+" : Math.floor((this.getMonth()+3)/3),
"S" : this.getMilliseconds() //millisecond
if(/(y+)/.test(format))
format=format.replace(RegExp.$1,(this.getFullYear()+"").substr(4 - RegExp.$1.length));
for(var k in o)
if(new RegExp("("+ k +")").test(format))
format = format.replace(RegExp.$1,RegExp.$1.length==1 ? o[k] : ("00"+ o[k]).substr((""+ o[k]).length));
&body style="margin-left: 40margin-top: 0margin-right: 4margin-bottom: 4"&
&div id="content" &
&div id="calendar" style="margin:3em 0;font-size:13px" class="fc"&
下载次数: 326
(214.2 KB)
下载次数: 273
浏览: 326472 次
来自: 湖南
show log 后可以在change history lis ...
我是用ssm写的不知道后台该怎么写 能帮帮我吗
很有帮助,谢谢
学习了素人派http://surenpi.com
如何在java Web项目中开发WebService接口,地址 ...
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'}

我要回帖

更多关于 java 日历 calendar 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信