JAVA编写日历实训心得
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
班级:**** 姓名:*** 学号:****10010127
java实验报告
实验7 日历
一、实验目的
1. 掌握swt 的容器概念及使用方法。
2. 掌握swt 中的工具栏与菜单的使用方法。
3. 掌握swt 中的表格组件的使用。
4. 掌握swt 各种对话框的使用方法。
二、实验内容:简单日历系统的设计与实现。
三、实验步骤:1. 简单日历系统的设计与实现
1) 创建java 类。在“包资源管理器”中用鼠标右击项目“practical”,选择快捷菜单中“新建”→“visual class”;在打开的“new java visual class ”窗口中,“源文件夹”的默认值是项目的文件夹,不需要更改,“包”栏中输入程序包的名称“ch7”。“名称”栏中输入类名“su”,在“style ”列表框中选择“swt”→“shell”,选中“public static void main(string[] args) ”复选框,使之自动创建一个main 方法,单击“完成”按钮,一个含有gui 程序界面以及代码的编辑器窗口被打开。2) 添加组件。用鼠标右键单击gui 程序界面的任何位置,在快捷菜单中选择“set layout”→“filllayout”。在“palette”面板中用鼠标单击“swt containers ”中的“viewform”,在程序界面sshell 中添加viewform 容器viewform 。从pallete 工具栏中依次单击组件:toolbar 和table ,在viewform 容器添加一个工具栏toolbar 和一个表格table ,并在工具栏toolbar 中添加4 个工具栏按钮toolitem~toolitem3;在表格中添加7 个表列tablecolumn~tablecolumn6 。更改4 个工具栏按钮的text 属性分别为“上一年”、“上个月”、“下个月”和“下一年”;更改7 个表列的text 属性分别为“日”~“六”,如图下所示。
(3)注意声明类的成员变量:calendar now=calendar.getinstance(); int year; int month;
4) 为类“su”编写自定义的“重置”方法。在编辑器中编写代码如下:public class su { private shell sshell = null; // @jve:decl-index=0:visual-constraint=138,42 private viewform viewform = null; private toolbar toolbar = null; private table table = null; private calendar now=calendar.getinstance(); int year; int month; private void createviewform() {viewform = new viewform(sshell, swt.none); createtoolbar(); viewform.settopleft(toolbar); table = new table(viewform, swt.none); table.setheadervisible(true); table.setfont(new font(display.getdefault(), tahoma, 10, swt.normal)); table.setlinesvisible(true); tablecolumn tablecolumn = new tablecolumn(table, swt.center); tablecolumn.setwidth(60); tablecolumn.settext(日); tablecolumn tablecolumn1 = new tablecolumn(table, swt.center); tablecolumn1.setwidth(60); tablecolumn1.settext(一); tablecolumn tablecolumn2 = new tablecolumn(table, swt.center); tablecolumn2.setwidth(60); tablecolumn2.settext(二); tablecolumn tablecolumn3 = new tablecolumn(table, swt.center); tablecolumn3.setwidth(60); tablecolumn3.settext(三); tablecolumn tablecolumn4 = new tablecolumn(table, swt.center); tablecolumn4.setwidth(60); tablecolumn4.settext(四); tablecolumn tablecolumn5 = new tablecolumn(table, swt.center); tablecolumn5.setwidth(60); tablecolumn5.settext(五); tablecolumn tablecolumn6 = new tablecolumn(table, swt.center); tablecolumn6.setwidth(60); tablecolumn6.settext(六); viewform.setcontent(table);} private void remove(calendar now){ int y; int year = now.get(calendar.year); int month=now.get(calendar.month)+1;case
2:{ if((year%4==0 && year%100!=0)||(year%400==0))y = 29; else y=28; break; } case 4:; case 6:; case 9:; case 11:y = 30;break; default: y=31; } now.set(year, month-1, 1); int d=now.get(calendar.day_of_week)-1; int switch (month) { l=d+y; string a[]=new string[42]; for(int i=d,n=1;i<l;i++){
a[i]=string.valueof(n++); } table.removeall(); for(int j=0;j<6;j++){
tableitem item = new tableitem(table, swt.left); item.settext(new
string[]{a[j*7+0],a[j*7+1],a[j*7+2],a[j*7+3],a[j*7+4],a[j*7+5],a[j*7+6]}); } sshell.settext(year+年+(month)+月份); }
(5). 依次为工具栏按钮添加选择事件响应。用鼠标右键单击工具按钮,在快捷菜单中
选择“events”→“add events”,在弹出的“add events ”对话框中选择“selection”
→“widgetselected”,单击“完成”按钮。
首先:toolitem 添加的事件响应代码为:toolitem.addselectionlistener(new org.eclipse.swt.events.selectionlistener() {
public void widgetselected(org.eclipse.swt.events.selectionevent e) {
year--; now.set(year, month-1, 1); remove (now); }
public void widgetdefaultselected(org.eclipse.swt.events.selectionevent e)
{} });
其次:为toolitem1 添加的事件响应代码为:
toolitem1.addselectionlistener(new
org.eclipse.swt.events.selectionlistener()
{ public void widgetselected(org.eclipse.swt.events.selectionevent e) { month=month-1; if(month==0){ year--; month=12; } now.set(year, month-1, 1); remove (now); }
public void widgetdefaultselected(org.eclipse.swt.events.selectionevent e)
{ } });
再者:为toolitem2 添加的事件响应代码为:toolitem2.addselectionlistener(new org.eclipse.swt.events.selectionlistener()
{ public void widgetselected(org.eclipse.swt.events.selectionevent e) { month=month+1; if(month==13){ year++; month=1; } now.set(year, month-1, 1); remove (now); }
public void widgetdefaultselected(org.eclipse.swt.events.selectionevent e)
{ } });
最后:为toolitem3 添加的事件响应代码为:toolitem3.addselectionlistener(new org.eclipse.swt.events.selectionlistener() {
public void widgetselected(org.eclipse.swt.events.selectionevent e) { year++; now.set(year, month-1, 1); remove (now); }
public void widgetdefaultselected(org.eclipse.swt.events.selectionevent e)
{ } });
(6)、为了初始化表格中的月历,修改类的createsshell() 方法代码如下:
private void createsshell() {
sshell = new shell(); sshell.settext(日历----苏建);
sshell.setfont(new font(display.getdefault(), tahoma, 14, swt.normal));
sshell.setforeground(new color(display.getcurrent(), 255, 0, 0));
sshell.setsize(new point(435, 313));createviewform();