实验三图形用户界面设计汽院含答案.docx

上传人:b****5 文档编号:7304490 上传时间:2023-01-22 格式:DOCX 页数:21 大小:102.12KB
下载 相关 举报
实验三图形用户界面设计汽院含答案.docx_第1页
第1页 / 共21页
实验三图形用户界面设计汽院含答案.docx_第2页
第2页 / 共21页
实验三图形用户界面设计汽院含答案.docx_第3页
第3页 / 共21页
实验三图形用户界面设计汽院含答案.docx_第4页
第4页 / 共21页
实验三图形用户界面设计汽院含答案.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

实验三图形用户界面设计汽院含答案.docx

《实验三图形用户界面设计汽院含答案.docx》由会员分享,可在线阅读,更多相关《实验三图形用户界面设计汽院含答案.docx(21页珍藏版)》请在冰豆网上搜索。

实验三图形用户界面设计汽院含答案.docx

实验三图形用户界面设计汽院含答案

实验三图形用户界面设计

实验目的

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();

【补充代码…】

returnpanel

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1