实验三图形用户界面设计汽院含答案Word文档下载推荐.docx
《实验三图形用户界面设计汽院含答案Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《实验三图形用户界面设计汽院含答案Word文档下载推荐.docx(21页珍藏版)》请在冰豆网上搜索。
东,南,西,北,中。
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(){
privateJPanelgetSouthPanel(){
}
publicstaticvoidmain(Stringargs[]){
ArtFontartFont=newArtFont();
artFont.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
2)根据ArtFont类代码和程序界面图设计北部面板northPanel:
privateJPanelgetNorthPanel(){
JPanelpanel=newJPanel();
【补充代码…】
returnpanel;
}
3)根据ArtFont类代码和程序界面图设计中部面板centerPanel:
privateJPanelgetCenterPanel(){
4)根据ArtFont类代码和程序界面图设计南部面板southPanel:
privateJPanelgetSouthPanel(){
//获得系统默认字体
GraphicsEnvironmentge=GraphicsEnvironment.getLocalGraphicsEnvironment();
fontNames=ge.getAvailableFontFamilyNames();
fontType=newJComboBox(fontNames);
//设置字体大小
fontSizes=newString[63];
for(inti=0;
i<
fontSizes.length;
i++){
fontSizes[i]=Integer.toString(i+10);
}
5)调试、编译和运行程序,并显示正确界面。
答案:
importjavax.swing.*;
importjava.awt.*;
container.add(northPanel,BorderLayout.NORTH);
//【补充代码】//将northPanel添加到窗体的北部
container.add(centerPanel,BorderLayout.CENTER);
//【补充代码】//将centerPanel添加到窗体的北部
container.add(southPanel,BorderLayout.SOUTH);
//【补充代码】//将southPanel添加到窗体的北部
//【补充代码】//将窗体位于屏幕的中央
setLocationRelativeTo(null);
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);
panel.setLayout(newBorderLayout());
txtArea=newJTextArea();
panel.add(txtArea,BorderLayout.CENTER);
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);
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;
星期几+day;
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();
【补充代码…】
privatePanelgetCenterPanel(){
【补充代码】//将panel的布局设置为7行7列的GridLayout布局
for(inti=0;
7;
titleName[i]=newButton(name[i]);
【补充代码】//panel添加组件titleName[i]。
42;
labelDay[i]=newLabel("
"
Label.CENTER);
【补充代码】//panel添加组件labelDay[i]。
labelDay[i].setText(days[i]);
privatePanelgetSouthPanel(){
Panelpan