实验三图形用户界面设计汽院含答案解析.docx
- 文档编号:30167270
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:23
- 大小:102.19KB
实验三图形用户界面设计汽院含答案解析.docx
《实验三图形用户界面设计汽院含答案解析.docx》由会员分享,可在线阅读,更多相关《实验三图形用户界面设计汽院含答案解析.docx(23页珍藏版)》请在冰豆网上搜索。
实验三图形用户界面设计汽院含答案解析
实验三图形用户界面设计
实验目的
1.掌握Java语言中GUI编程的基本方法
2.掌握Java语言中AWT组件的基本用法
3.掌握Java语言中Swing组件的基本用法
实验导读
1.通过图形用户界面(GUI:
GraphicsUserInterface),用户和程序之间可以方便地进行交互。
AWT(AbstractWindowingToolkit),中文译为抽象窗口工具包,是Java提供的用来建立和设置Java的图形用户界面的基本工具。
AWT由Java中的java.awt包提供,里面包含了许多可用来建立与平台无关的图形用户界面(GUI)的类,这些类又被称为组件(components)。
Swing是一个用于开发Java应用程序用户界面的开发工具包。
它以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格。
Swing开发人员只用很少的代码就可以利用Swing丰富、灵活的功能和模块化组件来创建优雅的用户界面。
JDK写程序所有功能都是靠虚拟机去操作本地操作系统。
比如window下,就是JDK用windowsAPI实现功能。
而awt包中很多组件是组件自身去调用本地操作系统代码
swing包中的组件采用的是调用本地虚拟机方法,由虚拟机再调用本地操作系统代码。
意思就是中间多了一层,这样就加强了swing包的移植性,与本地关系不那强了。
图3.1AWT常用组件继承关系图
Container为容器,是一个特殊的组件,该组件中可以通过add方法添加其他组件进来。
2.布局,容器中的组件的排放方式。
常见的布局管理器:
FlowLayout(流式布局管理器):
从左到右的顺序排列。
Panel默认的布局管理器。
BorderLayout(边界布局管理器):
东,南,西,北,中。
Frame默认的布局管理器。
GridLayout(网格布局管理器):
规则的矩阵
CardLayout(卡片布局管理器):
选项卡
GridBagLayout(网格包布局管理器):
非规则的矩阵
3.类JFrame是java.awt.Frame的扩展版本,该版本添加了对JFC/Swing组件架构的支持,常用方法如下:
1)JFrame()该构造方法可以创建一个无标题的窗口,窗口的默认布局为BorderLayout布局。
2)JFrame(Strings)该构造方法可以创建一个标题为s的窗口,窗口的默认布局为BorderLayout布局。
3)publicvoidsetBounds(inta,intb,intwidth,intheight)窗口调用该方法可以设置出现在屏幕上时的初始位置是(a,b),即距屏幕左面a个像素、距屏幕上方b个像素;窗口的宽是width,高是height。
4)publicvoidsetSize(intwidth,intheight)设置窗口的大小,窗口在屏幕出现是默认位置是(0,0)。
5)publicvoidsetVisible(booleanb)设置窗口是可见还是不可见,窗口默认是不可见的。
6)publicvoidsetResizable(booleanb)设置窗口是否可调整大小,窗口默认是可调整大小的。
7)publicvoidsetDefaultCloseOperation(intoperation)设置用户在此窗体上发起"close"时默认执行的操作。
8)publicvoidsetLocationRelativeTo(Componentc)设置窗口相对于指定组件的位置。
如果组件当前未显示,或者c为null,则此窗口将置于屏幕的中央。
实验内容
1.图形用户界面设计程序(ArtFont.java)
要求:
设计一个文字字体设置窗体,在该窗体中可以设置要显示文字的字体内容,包括字体名称、字体大小、粗体和斜体等字体风格。
并模拟在不同操作系统下的显示效果。
程序的最终显示效果如下:
提示:
整个窗体继承于JFrame,采用BorderLayout布局。
在窗体中添加三个JPanel:
northPanel、centerPanel和southPanel,分别位于窗体的北部、中部和南部,然后分别在各个面板中添加其它组件,并逐步完善程序功能。
请按以下步骤完成程序设计:
1)新建ArtFont类,该类用于显示主界面。
其主要代码如下:
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();
//设置容器;
Containercontainer=getContentPane();
container.setLayout(newBorderLayout());
【补充代码】//将northPanel添加到窗体的北部
【补充代码】//将centerPanel添加到窗体的北部
【补充代码】//将southPanel添加到窗体的北部
setSize(500,300);
【补充代码】//将窗体位于屏幕的中央
setVisible(true);}
privateJPanelgetNorthPanel(){
JPanelpanel=newJPanel();
returnpanel;
}
privateJPanelgetCenterPanel(){
JPanelpanel=newJPanel();
returnpanel;
}
privateJPanelgetSouthPanel(){
JPanelpanel=newJPanel();
returnpanel;
}
publicstaticvoidmain(Stringargs[]){
ArtFontartFont=newArtFont();
artFont.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
2)根据ArtFont类代码和程序界面图设计北部面板northPanel:
privateJPanelgetNorthPanel(){
JPanelpanel=newJPanel();
【补充代码…】
returnpanel;
}
3)根据ArtFont类代码和程序界面图设计中部面板centerPanel:
privateJPanelgetCenterPanel(){
JPanelpanel=newJPanel();
【补充代码…】
returnpanel;
}
4)根据ArtFont类代码和程序界面图设计南部面板southPanel:
privateJPanelgetSouthPanel(){
JPanelpanel=newJPanel();
//获得系统默认字体
GraphicsEnvironmentge=GraphicsEnvironment.getLocalGraphicsEnvironment();
fontNames=ge.getAvailableFontFamilyNames();
fontType=newJComboBox(fontNames);
//设置字体大小
fontSizes=newString[63];
for(inti=0;i fontSizes[i]=Integer.toString(i+10); } 【补充代码…】 returnpanel; } 5)调试、编译和运行程序,并显示正确界面。 答案: 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(); //设置容器; Containercontainer=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); //设置输入提示标签 panel.add(label); //设置文本输入框; inputText=newJTextField(10); panel.add(inputText); //inputText.addActionListener(this); boldBx=newJCheckBox("粗体"); panel.add(boldBx); italicBx=newJCheckBox("斜体"); panel.add(italicBx); colorBtn=newJButton("颜色"); 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); panel.add(fontType); fontSizes=newString[63]; for(inti=0;i<63;i++) {fontSizes[i]=Integer.toString((i+10));} fontSize=newJComboBox(fontSizes); fontSize.setEditable(false); fontSize.setMaximumRowCount(10); panel.add(fontSize); windowStyle=newJComboBox(style); panel.add(windowStyle); returnpanel; } publicstaticvoidmain(Stringargs[]){ ArtFontartFont=newArtFont(); artFont.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } 2.日历应用程序设计 编写一个应用程序,设计一个窗体,该窗体为BorderLayout布局。 窗体的中心添加一个Panel容器: Panel容器的布局是7行7列的GridLayout布局,Panel容器中放置49个标签,用来显示日历。 窗口的北面添加一个Panel容器,其布局是FlowLayout布局,Panel容器中放置两个按钮: nextMonth和previousMonth。 窗口的南面添加一个Panel容器,其布局是FlowLayout,Panel容器中放置一个标签用来显示一些信息。 请按以下步骤完成程序设计: 1)编写CalendarBean类,实现日期类: 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; } } 2)补充代码,完成日历窗体界面类设计: 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()); 【补充代码】//窗口添加scrollPane在中心区域 【补充代码】//窗口添加pNorth在北面区域 【补充代码】//窗口添加pSouth在南区域。 } privatePanelgetNorthPanel(){ Panelpanel=newPanel(); 【补充代码…】 returnpanel; } privatePanelgetCenterPanel(){ Panelpanel=newPanel(); 【补充代码】//将panel的布局设置为7行7列的GridLayout布局 for(inti=0;i<7;i++){ titleName[i]=newButton(name[i]); 【补充代码】//panel添加组件titleName[i]。 } for(inti=0;i<42;i++){ labelDay[i]=newLabel("",Label.CENTER); 【补充代码】//panel添加组件labelDay[i]。 } for(inti=0;i<42;i++){ labelDay[i].setText(days[i]); } returnpanel; } privatePanelgetSouthPanel(){ Panelpanel=newPanel();
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 图形 用户界面 设计 汽院含 答案 解析