1Java第三次实验报告班号:_K1373-1__学号:20139730128_姓名:__费慧___实验地点:___四教_______完成日期:2014年12月6日实验目的1.掌握Java语言中GUI编程的基本方法2.掌握Java语言中AWT组件的基本用法3.掌握Java语言中Swing组件的基本用法实验内容1.图形用户界面设计程序(ArtFont.java)要求:设计一个文字字体设置窗体,在该窗体中可以设置要显示文字的字体内容,包括字体名称、字体大小、粗体和斜体等字体风格。并模拟在不同操作系统下的显示效果。程序的最终显示效果如下:提示:整个窗体继承于JFrame,采用BorderLayout布局。在窗体中添加三个JPanel:northPanel、centerPanel和southPanel,分别位于窗体的北部、中部和南部,然后分别在各个面板中添加其它组件,并逐步完善程序功能。请按以下步骤完成程序设计:1)新建ArtFont类,该类用于显示主界面。其主要代码如下:2程序代码:packageExcesize3;importjavax.swing.*;importjava.awt.*;publicclassArtFontextendsJFrame{JComboBoxfontType;//字体样式下拉框,JComboBoxfontSize;//字体大小下拉框JComboBoxwindowStyle;//窗体样式下拉框JCheckBoxboldBx;//粗体按钮JCheckBoxitalicBx;//斜体按钮JButtoncolorBtn;//颜色按钮;String[]fontNames;//字体名称;String[]fontSizes;//字体大小;JLabellabel;//输入提示标签;JTextFieldinputText;//文字输入框;JTextAreatxtArea;//文字显示区;JPanelnorthPanel;//字体设置;JPanelcenterPanel;//显示效果区JPanelsouthPanel;//样式设置Fontfont;intboldStyle,italicStyle,underlineStyle;intfontSizeStyle;StringfontNameStyle;ColorcolorStyle=Color.black;//设置字体的默认颜色为黑色;String[]style={默认显示效果,Windows显示效果,Unix显示效果};publicArtFont(){super(字体设置);//设置默认字体boldStyle=0;italicStyle=0;underlineStyle=0;fontSizeStyle=10;fontNameStyle=宋体;font=newFont(fontNameStyle,boldStyle+italicStyle,fontSizeStyle);northPanel=getNorthPanel();centerPanel=getCenterPanel();southPanel=getSouthPanel();//设置容器;3Containercontainer=getContentPane();container.setLayout(newBorderLayout());container.add(northPanel,BorderLayout.NORTH);//将northPanel添加到窗体的北部container.add(centerPanel,BorderLayout.CENTER);//将centerPanel添加到窗体的北部container.add(southPanel,BorderLayout.SOUTH);//将southPanel添加到窗体的北部setSize(500,300);setLocationRelativeTo(null);//将窗体位于屏幕的中央setVisible(true);}privateJPanelgetNorthPanel(){JPanelpanel=newJPanel();label=newJLabel(输入,JLabel.LEFT);inputText=newJTextField(10);boldBx=newJCheckBox(粗体);italicBx=newJCheckBox(斜体);colorBtn=newJButton(颜色);panel.add(label);panel.add(inputText);panel.add(boldBx);panel.add(italicBx);panel.add(colorBtn);returnpanel;}privateJPanelgetCenterPanel(){JPanelpanel=newJPanel();panel.setLayout(newBorderLayout());txtArea=newJTextArea();panel.add(txtArea,BorderLayout.CENTER);returnpanel;}privateJPanelgetSouthPanel(){JPanelpanel=newJPanel();GraphicsEnvironmentge=GraphicsEnvironment.getLocalGraphicsEnvironment();fontNames=ge.getAvailableFontFamilyNames();fontType=newJComboBox(fontNames);fontType.setEditable(false);fontType.setMaximumRowCount(10);4fontSizes=newString[63];for(inti=0;ifontSizes.length;i++){fontSizes[i]=Integer.toString((i+10));}fontSize=newJComboBox(fontSizes);fontSize.setEditable(false);fontSize.setMaximumRowCount(10);windowStyle=newJComboBox(style);//窗体样式下拉框panel.add(fontType);panel.add(fontSize);panel.add(windowStyle);returnpanel;}publicstaticvoidmain(Stringargs[]){ArtFontartFont=newArtFont();artFont.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}程序截图:2)ArtFont类代码和程序界面图设计北部面板northPanel:程序截图:53)根据ArtFont类代码和程序界面图设计中部面板centerPanel:程序截图:4)根据ArtFont类代码和程序界面图设计南部面板southPanel:程序截图:65)调试、编译和运行程序,并显示正确界面。程序截图:2.日历应用程序设计编写一个应用程序,设计一个窗体,该窗体为BorderLayout布局。窗体的中心添加一个Panel容器:Panel容器的布局是7行7列的GridLayout布局,Panel容器中放置49个标签,用来显示日历。窗口的北面添加一个Panel容器,其布局是FlowLayout布局,Panel容器中放置两个按钮:nextMonth和previousMonth。窗口的南面添加一个Panel容器,其布局是FlowLayout,Panel容器中放置一个标签用来显示一些信息。7请按以下步骤完成程序设计:1)编写CalendarBean类,实现日期类: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){8day=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;}}2)补充代码,完成日历窗体界面类设计:importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassCalendarFrameextendsJFrameimplementsActionListener,KeyListener{/****/LabellabelDay[]=newLabel[42];LabellabelYear;ButtontitleName[]=newButton[7];ButtonnextMonth,previousMonth;LabelshowMessage;TextFieldinputYear;CalendarBeancalendar;Stringname[]={日,一,二,三,四,五,六};intyear=2013,month=1;Stringdays[];publicCalendarFrame(){9calendar=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(5);nextMonth=newButton(上月);previousMonth=newButton(下月);panel.add(labelYear);panel.add(inputYear);panel.add(nextMonth);panel.add(previousMonth);returnpanel;}privatePanelge