`
JAVA天地
  • 浏览: 656209 次
  • 性别: Icon_minigender_1
  • 来自: 太原
文章分类
社区版块
存档分类
最新评论

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

阅读更多

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

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

/**//*FileCalendarBean.java
*author:***
*Date:2007-12-823:37
*返回某年某月的日历的字符串数组
*/

importjava.util.Calendar;
publicclassCalendarBean...{
intyear=2007,month=0;
privateintmonthDays[]=...{31,28,31,30,31,30,31,31,30,31,30,31};

//设置年份
publicvoidsetYear(intyear)...{
this.year=year;
}


//获取年份
publicintgetYear()...{
returnyear;
}


//设置月份
publicvoidsetMonth(intmonth)...{
this.month=month>0?month:1;
}


//获取月份
publicintgetMonth()...{
returnmonth;
}


//判断是否为闰年
privatestaticbooleanisLeap(intyear)...{
return((year%4==0)&&(year%100==0))||(year%400==0);
}


//获得当前年月的日历所组成字符串数组
publicString[][]getCalendar()...{
Stringdata[][]
=newString[6][7];

Calendarcale
=Calendar.getInstance();
cale.set(year,month
-1,1);

//该月1号是星期几
intweekDay=cale.get(Calendar.DAY_OF_WEEK)-1;

//该月的天数
intday=monthDays[month-1];
if(month==2&&isLeap(year))day=29;

intnextDay=1;

//添加字符串数组
for(intk=0;k<6;k++)...{
if(k==0)
for(intj=weekDay;j<7;j++)...{
data[k][j]
=""+nextDay;
nextDay
++;
}

else
for(intj=0;j<7&&nextDay<=day;j++)...{
data[k][j]
=""+nextDay;
nextDay
++;
}

}

returndata;
}


}

/**//*FileCalenderFrame.java
*author:***
*Date:2007-12-823:37
*一个简单的日历
*/

importjavax.swing.*;
importjavax.swing.tree.*;
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.event.*;

publicclassCalenderFrameextendsJFrameimplementsItemListener,TreeSelectionListener...{
JTabletable;
JTreetree
=null;
DefaultMutableTreeNoderoot;
Objectname[]
=...{"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
JComboBoxyearList;
CalendarBeancale;
Stringrili[][];
Stringitem[]
=...{"2006","2007","2008","2009","2010"};
JSplitPanesplit;
intyear=2006;
intmonth=0;
JScrollPanescrollTree,scrollTable;

publicCalenderFrame()...{
cale
=newCalendarBean();

//添加年份列表
yearList=newJComboBox();
for(intk=0;k<item.length;k++)
yearList.addItem(item[k]);
yearList.addItemListener(
this);

//添加月份树
root=newDefaultMutableTreeNode(item[0]);
tree
=newJTree(root);
add(
newJScrollPane(tree),BorderLayout.WEST);
tree.addTreeSelectionListener(
this);

//设置年月及该月日历
cale.setYear(year);
cale.setMonth(month);
rili
=cale.getCalendar();
table
=newJTable(rili,name);

//添加到窗口
scrollTree=newJScrollPane(tree);
scrollTable
=newJScrollPane(table);
split
=newJSplitPane(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);
}


//更新年份及月份树
privatevoidupdateYear(intyear)...{
cale.setYear(year);
root
=newDefaultMutableTreeNode(String.valueOf(year));

DefaultMutableTreeNodemonths[]
=newDefaultMutableTreeNode[13];
for(inti=0;i<12;i++)...{
months[i]
=newDefaultMutableTreeNode(""+(i+1));
root.add(months[i]);
}

split.remove(scrollTree);
tree
=newJTree(root);
tree.addTreeSelectionListener(
this);
scrollTree
=newJScrollPane(tree);
split.add(scrollTree,JSplitPane.LEFT);
split.setDividerLocation(
0.5);
validate();
}


//年份列表的监听器
publicvoiditemStateChanged(ItemEvente)...{
StringyearStr
=yearList.getSelectedItem().toString().trim();
intyear=Integer.parseInt(yearStr);

updateYear(year);
}


//树结点的监听器
publicvoidvalueChanged(TreeSelectionEvente)...{
DefaultMutableTreeNodemonthNode
=(DefaultMutableTreeNode)tree.getLastSelectedPathComponent();
if(monthNode.isLeaf())...{
month
=Integer.parseInt(monthNode.toString().trim());
cale.setMonth(month);
rili
=cale.getCalendar();
split.remove(scrollTable);
table
=newJTable(rili,name);
scrollTable
=newJScrollPane(table);
split.add(scrollTable,JSplitPane.RIGHT);
split.setDividerLocation(
0.5);
validate();
System.out.println(
"validateok");
}


}


publicstaticvoidmain(Stringargs[])...{
newCalenderFrame();
}

}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics