版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上 南昌大学实验报告学生姓名: 学 号: 专业班级: 网络工程091 实验类型: 验证 综合 设计 创新 实验日期: 2012.5.18 实验成绩: 实验四 简单的万年历一、实验目的学习使用布局类。二、实验任务编写一个应用程序,有一个窗口,该窗口为BorderLayout布局。窗口的中心添加一个Panel容器:pCenter,pCenterd的布局是7行7列的GridLayout布局,pCenter中放置49个标签,用来显示日历。窗口的北面添加一个Panel容器pNorth,其布局是FlowLayout布局,pNorth放置两个按钮:nextMonth和previous
2、Month,单击nextMonth按钮,可以显示当前月的下一月的日历;单击previousMonth按钮可以显示当前月的上一月的日历。窗口的南面添加一个Panel容器pSouth,起布局是FlowLayout,pSouth中放置一个标签用来显示一些信息。三、实验内容编译并运行程序,查看结果。程序如下:CalendarFRame.java package calendar;import java.awt.BorderLayout;import java.awt.Button;import java.awt.GridLayout;import java.awt.Label;import java.
3、awt.Panel;import java.awt.ScrollPane;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JFrame;public class CalendarFrame extends JFrame implements ActionListener Label labelDay=new Label42; Button titleName=new Button7; String name="日","一",
4、"二","三", "四","五","六" Button nextMonth,previousMonth; int year=2012,month=5; CalendarBean calendar; Label showMessage=new Label("",Label.CENTER); public CalendarFrame() Panel pCenter=new Panel(); pCenter.setLayout(new GridLayout(7,7); /将pCen
5、ter的布局设置为7行7列的GridLayout 布局。 for(int i=0;i<7;i+) titleNamei=new Button(namei); pCenter.add(titleNamei);/pCenter添加组件titleNamei。 for(int i=0;i<42;i+) labelDayi=new Label("",Label.CENTER); pCenter.add(labelDayi);/pCenter添加组件labelDayi。 calendar=new CalendarBean(); calendar.setYear(year);
6、 calendar.setMonth(month); String day=calendar.getCalendar(); for(int i=0;i<42;i+) labelDayi.setText(dayi); nextMonth=new Button("下月"); previousMonth=new Button("上月"); nextMonth.addActionListener(this); previousMonth.addActionListener(this); Panel pNorth=new Panel(), pSouth=ne
7、w Panel(); pNorth.add(previousMonth); pNorth.add(nextMonth); pSouth.add(showMessage); showMessage.setText("日历:"+calendar.getYear()+"年"+ calendar.getMonth()+"月" ); ScrollPane scrollPane=new ScrollPane(); scrollPane.add(pCenter); add(scrollPane,BorderLayout.CENTER);/ 窗口添加
8、scrollPane在中心区域 add(pNorth,BorderLayout.NORTH);/ 窗口添加pNorth 在北面区域 add(pSouth,BorderLayout.SOUTH);/ 窗口添加pSouth 在南区域。 public void actionPerformed(ActionEvent e) if(e.getSource()=nextMonth) month=month+1; if(month>12) month=1; calendar.setMonth(month); String day=calendar.getCalendar(); for(int i=0;
9、i<42;i+) labelDayi.setText(dayi); else if(e.getSource()=previousMonth) month=month-1; if(month<1) month=12; calendar.setMonth(month); String day=calendar.getCalendar(); for(int i=0;i<42;i+) labelDayi.setText(dayi); showMessage.setText("日历:"+calendar.getYear()+"年"+calenda
10、r.getMonth()+"月" ); CalendarBean.javapackage calendar;import java.util.Calendar;public class CalendarBean String day; int year=2005,month=0; public void setYear(int year) this.year=year; public int getYear() return year; public void setMonth(int month) this.month=month; public int getMonth
11、() return month; public String getCalendar() String a=new String42; Calendar 日历=Calendar.getInstance(); 日历.set(year,month-1,1); int 星期几=日历.get(Calendar.DAY_OF_WEEK)-1; int day=0; if(month=1|month=3|month=5|month=7|month=8|month=10|month=12) day=31; if(month=4|month=6|month=9|month=11) day=30; if(mon
12、th=2) if(year%4=0)&&(year%100!=0)|(year%400=0) day=29; else day=28; for(int i=星期几,n=1;i<星期几+day;i+) ai=String.valueOf(n) ; n+; return a; CalendarMainClass.javapackage calendar;public class CalendarMainClass public static void main(String args) CalendarFrame frame=new CalendarFrame(); fram
13、e.setBounds(100,100,360,300); frame.setVisible(true); frame.validate(); frame.addWindowListener(new java.awt.event.WindowAdapter() public void windowClosing(java.awt.event.WindowEvent e) System.exit(0); ); 运行结果:四、实验小结本次实验的主要目的是学习使用布局类,在本程序中CalendarFrame()是构造方法,负责完成窗口的初始化;actionPerformed(ActionEvent)
14、方法是CalendarFrame类实现的ActionListener接口中的方法;CalendarFrame创建的窗口时nextMonth,previousMonth按钮的ActionEvent事件监听器,当用户单击按钮时,窗口将执行actionPerformed(ActionEvent)方法进行相应的操作。实现起来并不复杂。有难度的地方在于判断闰年还是平年,判断相应天数和算出日期分布等函数的算法实现。五、思考题在CalendarFrame类中增加一个TextField文本框,用户可以通过在文本框中输入年份来修改calender对象的int成员year。答:实现该功能需用TextField类创
15、建showYear和showMonth文本框,用来显示年份和月份(可以用Button创建nextYear,previousYear实现“上年”和“下年”,使界面更加友好)。添加的主要代码如下:1) TextField showYear,showMonth;2) showYear=new TextField(“”+year,6); showYear.setHorizontalAlingnment(TextField.CENTER); showMonth=new TextField(“”+month,4); showMonth.setHorizontalAlingnment(TextField.C
16、ENTER); nextYear=new Button(“下年”); previousYear=new Button(“上年”); nextYear.addActionListener(this); previousYear.addActionListener(this); JPanel north=new Panel(); north.add(previousYear); north.add(showYear); north.add(nextYear); if(e.getSourse=previousYear)year-;showYear.setText(“”+year);calendarMessage.setYear(year);calendarFram
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理文书书写中的语言规范
- 精神科儿童多动症教学查房|完整课件 + 配套教案
- 口腔感染的预防与控制
- 广东医疗卫生事业单位(医学影像技术)备考试题及答案
- 国开一体化平台02325《市场营销学》机考试题及答案
- 2026年监理工程师重点练习
- 2026年上半年食品安全监管队伍建设工作总结
- 2026年中医执业医师实践技能真题及模拟考试卷
- 市政广场照明技术交底(标准范本)
- 2026年医学检验事业编考试题及答案
- 2025年水利工程施工监理合同(GF-2007-0211)纠纷解决协议
- 中国软件行业协会:2025中国软件行业基准数据报告 SSM-BK-202509
- 2025年信阳固始县城区缺编学校选聘教师296人考试模拟试题及答案解析
- 航空器地面灭火知识培训课件
- 防暑防汛的培训课件
- 《中小学跨学科课程开发规范》
- DZ/T 0156-1995区域地质及矿区地质图清绘规程
- 学生奶采购配送服务方案(技术标)
- 2025年锂电池安全生产管理和风险辨识手册
- 简约中国农业银行模板
- 管道振动的主要原因、危害及消除措施
评论
0/150
提交评论