版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验五Java事件处理实验目的掌握Java语言中的事件处理方法掌握Java语言中事件源、监视器和处理事件的接口的概念实验内容图形用户界面设计程序(ArtFont.java)在实验三第1题的基础上,添加事件处理机制,并逐步完善程序功能。分别用ArtFont类的对象做监视器和匿名内部类的对象做监视器实现。要求实现如下功能:当在文本框中输入文字后回车,在文本域中显示输入的文字。当分别选择粗体和斜体复选框时,文本域中的文字分别显示粗体和斜体样式。当点击颜色按钮时,出现颜色选择对话框,选择需要的颜色,按确定按钮后,按钮的前景色和文本域的前景色设置为选定的颜色。当选择字体样式下拉框中的某一字体样式时,文本域中的文字设置为指定的字体样式。当选择字体大小下拉框中的某一字体大小时,文本域中的文字设置为指定的字体大小。当选择窗体样式下拉框中的某一窗体效果时,窗体外观改变为指定的窗体外观。图1程序界面运行效果packageSy;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassArtFontextendsJFrame{ staticArtFontartFont; JComboBoxfontType;//字体样式下拉框 JComboBoxfontSize;//字体大小下拉框 JComboBoxwindowStyle;//窗体样式下拉框 JCheckBoxboldBx;//粗体按钮 JCheckBoxitalicBx;//斜体按钮 JButtoncolorBtn;//颜色按钮 String[]fontNames;//字体名称 String[]fontSizes;//字体大小 JLabellabel;//输入提示标签 JTextFieldinputText;//文字输入框 JTextAreatxtArea;//文字显示区 JPanelnorthPanel;//字体设置 JPanelcenterPanel;//显示效果区 JPanelsouthPanel;//样式设置 Fontfont; intboldStyle,italicStyle; intfontSizeStyle; StringfontNameStyle; ColorcolorStyle=Color.black;//设置字体的默认颜色为黑色 String[]style={"默认显示效果","Windows显示效果","Unix显示效果"}; publicArtFont(){ super("字体设置"); windowStyle=newJComboBox(style); fontType.addItemListener(newItemListener(){ @Override publicvoiditemStateChanged(ItemEvente){ //字体的类型 fontNameStyle=(String)e.getItem(); font=newFont(fontNameStyle,boldStyle+italicStyle,fontSizeStyle); txtArea.setFont(font); } }); fontSize.addItemListener(newItemListener(){ @Override publicvoiditemStateChanged(ItemEvente){ //字体的大小 Strings=(String)e.getItem(); fontSizeStyle=Integer.parseInt(s); font=newFont(fontNameStyle,boldStyle+italicStyle,fontSizeStyle); txtArea.setFont(font); } }); windowStyle.addItemListener(newItemListener(){ @Override publicvoiditemStateChanged(ItemEvente){ //改变窗口 Strings=(String)e.getItem(); StringclassName=""; if(s.equals("Windows显示效果")) className="com.sun.java.swing.plaf.windows.WindowsLookAndFeel"; elseif(s.equals("Unix显示效果")) className="com.sun.java.swing.plaf.motif.MotifLookAndFeel"; elseif(s.equals("默认显示效果")) className=UIManager.getCrossPlatformLookAndFeelClassName(); try{ UIManager.setLookAndFeel(className); SwingUtilities.updateComponentTreeUI(artFont); }catch(Exceptionde){ System.out.println("Exceptionhappened!"); } } }); panel.add(fontType); panel.add(fontSize); panel.add(windowStyle); returnpanel; } publicstaticvoidmain(Stringargs[]){ artFont=newArtFont(); artFont.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }}日历应用程序设计在实验三第2题的基础上,添加事件处理机制,并逐步完善程序功能。分别用CalendarFrame类的对象做监视器和匿名内部类的对象做监视器实现。要求实现如下功能:在文本框inputYear中输入年份,验证年份的有效性;按回车键后,显示输入年份的正确日历单击previousMonth按钮可以显示当前月的上一月的日历;如果月份小于1,则显示上一年的12月单击nextMonth按钮,可以显示当前月的下一月的日历;如果月份大于1,则显示下一年的1月CalendarBean.javapackageSy;importjava.util.Calendar;publicclassCalendarBean{ Stringday[]; intyear=2013,month=0; publicvoidsetYear(intyear){ this.year=year; } publicintgetYear(){ returnyear; } publicvoidsetMonth(intmonth){ this.month=month; } publicintgetMonth(){ returnmonth; } //返回某年某月1号开始的日期数组 publicString[]getCalendar(){ Stringa[]=newString[42]; Calendar日历=Calendar.getInstance(); //注意:1月份是从0开始,所以要减1 日历.set(year,month-1,1); int星期几=日历.get(Calendar.DAY_OF_WEEK)-1; intday=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(month==2){ if(((year%4==0)&&(year%100!=0))||(year%400==0)){ day=29; }else{ day=28; } } for(inti=星期几,n=1;i<星期几+day;i++){ a[i]=String.valueOf(n); n++; } returna; }}CalendarFrame.javapackageSy;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassCalendarFrameextendsFrame{ LabellabelDay[]=newLabel[42]; LabellabelYear; ButtontitleName[]=newButton[7]; ButtonnextMonth,previousMonth; LabelshowMessage; TextFieldinputYear; CalendarBeancalendar; Stringname[]={"日","一","二","三","四","五","六"}; intyear=2013,month=1; Stringdays[]; publicCalendarFrame(){ calendar=newCalendarBean(); calendar.setYear(year); calendar.setMonth(month); days=calendar.getCalendar(); ScrollPanescrollPane=newScrollPane(); scrollPane.add(getCenterPanel()); add(scrollPane,BorderLayout.CENTER);//窗口添加scrollPane在中心区域 add(getNorthPanel(),BorderLayout.NORTH);//窗口添加pNorth在北面区域 add(getSouthPanel(),BorderLayout.SOUTH);//窗口添加pSouth在南区域。 } privatePanelgetNorthPanel(){ Panelpanel=newPanel(); labelYear=newLabel("请输入年份:"); inputYear=newTextField(10); previousMonth=newButton("上月"); nextMonth=newButton("下月"); inputYear.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){ //文本输入 try{ year=Integer.parseInt(inputYear.getText()); }catch(NumberFormatExceptione1){ JOptionPane.showMessageDialog(null,"您输入的年份有误,请重新输入!"); inputYear.setFocusable(true); } calendar.setYear(year); calendar.setMonth(month); days=calendar.getCalendar(); for(inti=0;i<42;i++){ labelDay[i].setText(days[i]); } showMessage.setText("日历:"+calendar.getYear()+"年" +calendar.getMonth()+"月"); } }); previousMonth.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){ //上月按钮 month--; if(month<1){ year--; month=1; } calendar.setYear(year); calendar.setMonth(month); days=calendar.getCalendar(); for(inti=0;i<42;i++){ labelDay[i].setText(days[i]); } showMessage.setText("日历:"+calendar.getYear()+"年" +calendar.getMonth()+"月"); } }); nextMonth.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){ //下月按钮 month++; if(month>12){ year++; month=1; } calendar.setYear(year); calendar.setMonth(month); days=calendar.getCalendar(); for(inti=0;i<42;i++){ labelDay[i].setText(days[i]); } showMessage.setText("日历:"+calendar.getYear()+"年" +calendar.getMonth()+"月"); } }); panel.add(labelYear); panel.add(inputYear); panel.add(previousMonth); panel.add(nextMonth); returnpanel; } privatePanelgetCenterPanel(){ Panelpanel=newPanel(); panel.setLayout(newGridLayout(7,7)); //将panel的布局设置为7行7列的GridLayout布局 for(inti=0;i<7;i++){ titleName[i]=newButton(name[i]); panel.add(titleName[i]); //panel添加组件titleName[i]。 } for(inti=0;i<42;i++){ labelDay[i]=newLabel("",Label.CENTER); panel.add(labelDay[i]); //panel添加
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度林产品加工与许可经营合同2篇
- 二零二五年度俄语企业内部培训翻译合同
- 二零二五年度房地产广告经纪服务合同3篇
- 2025年度消防工程清包及消防产品采购合同范本3篇
- 海南医学院《法律社会学》2023-2024学年第一学期期末试卷
- 海南师范大学《建筑物理(热)》2023-2024学年第一学期期末试卷
- 二零二五年度数据中心专用个人机柜租赁及云服务接入合同3篇
- 二零二五年度杭州建筑工程装修设计与施工合同3篇
- 数据库系统课程设计任务书(知识研究)
- 网页设计课程设计成品
- 2025年包钢(集团)公司招聘笔试参考题库含答案解析
- 2025年沈阳水务集团招聘笔试参考题库含答案解析
- 2025年高三语文八省联考作文题目详解:7个立意、15个标题、5个素材
- 《科学与工程伦理》课件-1港珠澳大桥工程建设中的白海豚保护相关案例分析
- 心肺复苏术课件2024新版
- 2023-2024公需科目(数字经济与驱动发展)考试题库及答案
- 重症患者的容量管理课件
- GMW系列往复式给料机说明书
- 集装箱码头堆场项目可行性研究报告写作范文
- 食堂成本核算方案
- 医保药店一体化信息管理系统操作手册
评论
0/150
提交评论