java考试题库第五章
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
选择题
5-1下列关于容器的描述中,错误的是D
A.容器是由若干个组建和容器组成的
B.容器是对图形界面中界面元素的一种管理
C.容器是一种对指定宽和高的矩形范围
D.容器都是可以独立的窗口
5-2下列界面元素中,不是容器的是A
A.List
B.Frame
C.Dialog
D.Panel
5-3下列关于实现图形用户界面的描述中,错误的是D
A.放在容器中的组件首先要定义,接着要初始化
B.放在容器中的多个组件是要进行布局的,默认的布局策略是FlowLayout C.容器中所有组件都是事件组件,都可以产生事件对象
D.事件处理是忧监听者定义的方法来实现的
5-4下列关于组件类的描述中,错误的是A
A.组件类中包含了文本组件类(TextComponent)和菜单组件类(MenuComponent)
B.标签(Label)和按钮(Button)是组件类(Component)的子类
C.面板(Panel)和窗口(Window)是容器类(Container)的子类
D.文本框(TextField)和文本区(TextArea)是文本组件类(TextComponent)的子类5-5在对下列语句的解释中,错误的是C
but.addActionListener(this);
A.but是某种事件对象,如按钮事件对象
B.this表示当前容器
C.ActionListener是动作事件的监听者
D.该语句的功能是将but对象注册为this对象的监听者
5-6所有事件类的父类是C
A.ActionEvent B.AwtEvent C.KeyEvent D.MouseEvent
5-7所有GUI标准组件类的父类是C
A.Buttom B.List C.Component D.Container
5-8下列各种布局管理器中Window类、Dialog类和Frame类的默认布局是C
A.FlowLayout B.CardLayout C.BorderLayout D.GridLayout
5-9在下列各种容器中,最简单的无边框的又不能移动和缩放的只能包含在另一种容器中的容器是D
A.Window B.Dialog C.Frame D.Panel
5-10下列关于菜单和对话框的描述中,错误的是C
A.Frame容器是可以容纳菜单组件的容器
B.菜单条中可包含若干个菜单,菜单中又可包含若干菜单项,菜单项中还可包含菜单子项
C.对话框与Frame一样都可作为程序的最外层容器
D.对话框内不含有菜单条,它由Frame弹出
判断题
5-1 AWT是抽象窗口工具包的英文缩写。
(对)
5-2 容器中只能包含有组件,而不能再含有容器。
(错)
5-3 容器分可以独立的窗口和不可以独立的窗口两种。
(对)
5-4 单选按钮提供“多选一”的输入选择,下拉列表提供“多选多”的输入选择。
(错)
5-5 所有容器的默认布局都是FlowLayout。
(错)
5-6 所有的组件都是事件源。
(错)
5-7 Java2的事件处理方法是采用委托事件处理模型。
(对)
5-8 事件组件都应注册一个事件监听者。
(对)
5-9 事件监听者除了得知事件的发生外,还应调用相应方法处理事件。
(对)
5-10 所有事件的父类是EventObject类。
(对)
5-11 图形用户界面是由用户自定义成分、控制组件和容器组成的。
(对)
5-12 所有GUI标准组件类的父类是Component类。
(对)
5-13 所有容器类的父类是Frame类。
(错)
5-14 标准和按钮都是事件源。
(对)
5-15 文本去和文本框都可以引发两种事件:文本改变事件和动作事件。
(错)
5-16 每个复选框有两种状态:“打开”和“关闭”状态。
(对)
5-17 复选框组(CheckboxGroup)是由若干个按钮组成的。
在一组按钮中可选多个。
(错)
5-18 列表(List)是由多个选项组成的,只可在列表框的若干个选项选取一个。
(错)
5-19 下拉列表(Choice)是一种“多选多”的输入界面。
(错)
5-20 滚动条有两类:水平滚动条和垂直滚动条。
(对)
5-21 画布(Canvas)是一种可容纳多个组件的容器。
(错)
5-22 所有容器都采用顺序布局(FlowLayout)作为默认布局管理器。
(错)
5-23 边界布局(BorderLayout)将容器分为东、西、南、北共4个区域。
(错)
5-24 卡片布局(CardLayout)可使容器容纳多个组件,在同一时刻只显示若干个组件中的一个。
(对)
5-25 容器可容纳组件和容器,同一个容器中的组件可被同时显示或者同时隐藏。
(对)
5-26 所有容器都是有边框的。
(错)
5-27 Panel容器是可以嵌套使用的。
(对)
5-28 Applet实际是一种特殊的Panel容器。
JavaApplet程序只负责它拥有的Applet容器内的无边框区域。
(对)
5-29窗口(Window)容器是一种独立窗口,但它不能作为程序的最外层容器。
(对)
5-30 Frame容器是有边框的容器,它也是一种独立窗口,只能作为最外层容器。
(对)
5-31 Frame容器可以容纳菜单组件,它实现了MenuContainer接口。
(对)
5-32 MenuComponent类是菜单组件的父类。
(对)
5-33 菜单条(MunuBar)、菜单(Munu)、菜单项(MunuItem)是3中不同的菜单组件。
(错)
5-34 对话框(Dialog)不是一种独立使用的容器。
(错)
5-35 文件对话框(FileDialog)是对话框(Dialog)的子类,它是一种打开文件和保留文件的对话框窗口。
(对)
分析程序输出结果
5-1 Exer5_1.java
importjava.applet.*;
importjava.awt.*;
publicclassExer5_1extendsApplet
{
privateLabellab1,lab2;
publicvoidinit()
{
lab1=newLabel();
lab1.setText("标签文本左对齐");
lab1.setAlignment(Label.LEFT);
lab2=newLabel("标签文本右对齐",Label.RIGHT);
setLayout(newGridLayout(3,3));
add(lab1);add(lab2);
}
}
运行改程序后,输出结果如图5-5所示。
图5-5分析题5-1输出结果
5-2Exer5_2.java
importjava.applet.*;
importjava.awt.*;
importjava.awt.event.*;
publicclassExer5_2extendsAppletimplementsActionListener,ItemListener {
ListcolList;
StringcolName[]={"黑色","蓝色","浅蓝色","绿色","红色","黄色"};
Colorcols[]={Color.black,Color.blue,Color.cyan,Color.green,Color.red,Color.yellow };
intt;
publicvoidinit()
{
colList=newList(4,false);
colList.addActionListener(this);
colList.addItemListener(this);
for(inti=0;i<colName.length;i++)
colList.add(colName[i]);
add(colList);
}
publicvoidactionPerformed(ActionEvente)
{}
publicvoiditemStateChanged(ItemEvente)
{
showStatus(colList.getSelectedItem()+";index"+colList.getSelectedIndex());
t=colList.getSelectedIndex();
repaint();
}
publicvoidpaint(Graphicsg)
{
g.setColor(cols[t]);
g.fillRect(15,30,20,20);
}
}
运行改程序后,输出结果如图5-6所示。
5-3Exer5_3.java
importjava.awt.*;
importjava.awt.event.*;
publicclassExer5_3extendsFrameimplementsActionListener {
Framefr;
Paneldeck;
CardLayoutc1;
Buttonbut[];
Stringname[]={"第一张","下一张","前一张","最末张"}; publicExer5_3()
{
fr=newFrame("卡片窗口");
deck=newPanel();
c1=newCardLayout();
deck.setLayout(c1);
Panelc1=newPanel();
Labellab1=newLabel("卡片1");
c1.add(lab1);
deck.add(c1,lab1.getText());
Panelc2=newPanel();
Labellab2=newLabel("卡片2");
c2.add(lab2);
deck.add(c2,lab2.getText());
Panelc3=newPanel();
Labellab3=newLabel("卡片3");
c3.add(lab3);
deck.add(c3,lab3.getText());
Panelc4=newPanel();
Labellab4=newLabel("卡片4");
c4.add(lab4);
deck.add(c4,lab4.getText());
Panelcontr=newPanel();
contr.setLayout(newGridLayout(2,2));
but=newButton[name.length];
for(inti=0;i<name.length;i++)
{
but[i]=newButton(name[i]);
but[i].addActionListener(this);
contr.add(but[i]);
}
fr.add(contr,BorderLayout.WEST);
fr.add(deck,BorderLayout.EAST);
fr.setSize(300,150);
fr.show();
}
publicvoidactionPerformed(ActionEvente) {
if(e.getSource()==but[0])
c1.first(deck);
if(e.getSource()==but[1])
c1.next(deck);
if(e.getSource()==but[2])
c1.previous(deck);
if(e.getSource()==but[3])
st(deck);
}
publicstaticvoidmain(Stringargs[])
{
Exer5_3 m1=newExer5_3();
}
}
运行该程序后,输出结果如图5-7所示。
5-4 Exer5_4.java
importjava.awt.*;
publicclassExer5_4extendsFrame
{
TextFieldtf=newTextField("",30);
MenuBarmb1=newMenuBar();
Menuf=newMenu("文件");
Menum=newMenu("照片");
Menus=newMenu("储存");
Stringname[]={"第一张","下一张","前一张","最末张"};
CheckboxMenuItem[]save={newCheckboxMenuItem("保存"),newCheckboxMenuItem("另存为")};
MenuItem[]file1={newMenuItem("打开"),newMenuItem("关闭")};
MenuBarmb2=newMenuBar();
Menufo=newMenu("水果");
MenuItem[]fruit={newMenuItem("香蕉"),newMenuItem("苹果"),newMenuItem("李子")}; Buttonbut=newButton("Swap");
publicExer5_4()
{
for(inti=0;i<name.length;i++)
{
m.add(newMenuItem(name[i]));
if((i+1)%3==0)
m.addSeparator();
}
for(inti=0;i<save.length;i++)
s.add(save[i]);
f.add(s);
for(inti=0;i<file1.length;i++)
f.add(file1[i]);
mb1.add(f);
mb1.add(m);
setMenuBar(mb1);
tf.setEditable(false);
add("Center",tf);
add("North",but);
for(inti=0;i<fruit.length;i++)
fo.add(fruit[i]);
mb2.add(fo);
}
publicbooleanhandleEvent(Evente)
{
if(e.id==Event.WINDOW_DESTROY)
System.exit(0);
else
returnsuper.handleEvent(e);
returntrue;
}
publicbooleanaction(Evente,Objectarg) {
if(e.target.equals(but))
{
MenuBarm=getMenuBar();
if(m==mb1)
setMenuBar(mb2);
elseif(m==mb2)
setMenuBar(mb1);
}
elseif(e.targetinstanceofMenuItem)
{
if(arg.equals("打开"))
{
Stringstr=tf.getText();
Booleanch=false;
for(inti=0;i<name.length;i++)
if(str.equals(name[i]))
ch=true;
if(!ch)
tf.setText("你按了打开菜单"); else
tf.setText("打开"+str);
}
elseif(e.target.equals(file1[1])) System.exit(0);
elseif(e.target.equals(save[0]))
tf.setText("你按了保存菜单"); elseif(e.target.equals(save[1]))
tf.setText("你按了另存为菜单"); else
tf.setText(arg.toString());
}
else
returnsuper.action(e,arg); returntrue;
}
publicstaticvoidmain(Stringargs[]) {
Exer5_4ex=newExer5_4();
ex.setSize(newDimension(200,200)); ex.setVisible(true);
}
}运行该程序后,输出结果如图5-8所示。
5-5Exer5_5.java
importjava.awt.*;
importjava.awt.event.*;
classmyDialogFrameextendsFrameimplementsActionListener
{
MenuItemaboutItem,exitItem;
aboutDialogmyDialog;
publicmyDialogFrame()
{
setSize(300,200);
setTitle("我的联系窗口");
addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEventE){System .exit(0);}});
MenuBarmb=newMenuBar();
setMenuBar(mb);
Menufm=newMenu("练习");
mb.add(fm);
aboutItem=newMenuItem("关于信息");
aboutItem.addActionListener(this);
fm.add(aboutItem);
exitItem=newMenuItem("退出");
exitItem.addActionListener(this);
fm.add(exitItem);
}
publicvoidactionPerformed(ActionEvente)
{
Objectsou=e.getSource();
if(sou==aboutItem)
{
if(myDialog==null)
myDialog=newaboutDialog(this);
myDialog.show();
}
elseif(sou==exitItem)
{System.exit(0);}
}
}
classaboutDialogextendsDialog
{
publicaboutDialog(Frameparent)
{
super(parent,"信息框",true);
Panelp1=newPanel();
TextAreata=newTextArea(10,30);
ta.setText("请写下你的信息");
p1.add(ta);
add("North",p1);
Panelp2=newPanel();
Buttonbut=newButton("返回");
p2.add(but);
add("Center",p2);
but.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente) {setVisible(false);}});
setSize(300,250);
}
}
publicclassExer5_5
{
publicstaticvoidmain(Stringargs[])
{
Framefr=newmyDialogFrame();
fr.show();
}
}
运行该程序后,输出结果如图5-9所示。
编程题
5-1使用JavaApplet编写满足下列要求的程序:
(1)含有两个按钮和两个标签;
(2)含有文本框和文本区;
(3)含有一个按钮具有退出功能;
编写程序如下:
importjava.awt.*;
importjava.awt.event.*;
classpro5_1extendsWindowAdapterimplicationActionListener
{
Framef;
Labella1,la2;
Buttonb1,b2;
TextFieldtf;
inttag=0;
publicstaticvoidmain(Stringargs[]) {
pro5_1mywin=newpro5_1();
mywin.display();
}
publicvoiddisplay()
{
f=newFrame("我的现实窗口");
la1=newLabel("标签1");
la2=newLabel("标签2");
f.add(la1,"North");
f.add(la2,"West");
b1=newButton("现实字符串");
b2=newButton("退出");
b1.addActionListener(this);
f.add(b1,"South");
b2.addActionListener(this);
f.add(b2,"East");
tf=newTextField();
f.add(tf,"Center");
f.addWindowListener(this);
f.setSize(400,200);
f.setVisible(true);
}
publicvoidactionPerformed(ActionEvente)
{
Strings1="这是一个字符串";
Strings2="这是另一个字符串";
if(e.getActionCommand().equals("退出"))
System.exit(0);
if(tag==0)
{
tf.setText(s1);
tag=1;
}
else
{
tf.setText(s2);
tag=0;
}
}
publicvoidwindowClosing(WindowEvente)
{
System.exit(0);
}
}
运行该程序后,输出结果如图5-10所示。
5-2使用JavaApplication编写满足下列要求的程序。
(1)使用GridLayout布局。
(2)设计一个简单的计算器。
包括数字按钮0~9,以及加、减、乘、除、清零、等于运算按钮和一个现实计算结果的文本区。
请读者参照本书本章5.2程序距离中的例5.1的程序内容进行编写。
5-3编写一个图形用户界面的Application程序。
(1)有一个菜单条;
(2)菜单条中有3个菜单;
(3)每个菜单有2个菜单项,其中一个菜单项又具有2个菜单子项。
程序内容如下:
importjava.awt.*;
importjava.awt.event.*;
publicclasspro5_3extendsFrameimplementsActionListener,ItemListener
{
TextFieldtext;
publicpro5_3()
{
super("一个联系菜单的窗口");
setSize(300,200);
}
publicvoidinit()
{
MenuBarmyB=newMenuBar();
setMenuBar(myB);
Menum1=newMenu("文件");
m1.add(newMenuItem("保存"));
m1.addSeparator();
m1.add("退出");
m1.addActionListener(this);
myB.add(m1);
Menum2=newMenu("编辑");
m2.add("复制");
m2.addSeparator();
m2.add("全选");
m2.addActionListener(this);
myB.add(m2);
Menum3=newMenu("插入");
m3.add("页码");
m3.addSeparator();
Menum31=newMenu("图片");
m31.add("来自剪贴画");
m31.add("来自图形文件");
m3.add(m31);
m3.addActionListener(this);
myB.add(m3);
text=newTextField();
add("South",text);
}
publicstaticvoidmain(Stringargs[]) {
pro5_3myMenu=newpro5_3();
myMenu.init();
myMenu.setVisible(true);
}
publicvoiditemStateCharged(ItemEvente)
{
text.setText("状态改变");
}
publicvoidactionPerformed(ActionEvente)
{
text.setText(e.getActionCommand());
if(e.getActionCommand()=="退出")
System.exit(0);
}
}
运行该程序后,输出结果如图5-11所示。
5-4 编写一个可以弹出对话框的程序。
请读者参考本书本章5.2程序举例中的例5.4的程序内容进行编程。
测试题:
1.单选题
5-1下列关于图形用户界面元素的描述中,错误的是()
A.java.Awt包中含有GUI的各类组件
B.容器类(Container)是组件类(Componenet)的一个子类
C.可以向容器中填加组件,不能向容器中填加容器
D.组件在容器中的安排是由布局管理器类来决定的
5-2下列关于事件和事件处理的描述中,错误的是()
A.每个事件源只能发出一种类型的事件
B.事件对象是指某种事件类的对象
C.事件监听者是某种监听者类的对象
D.通常注册当前容器为事件对象的监听者
5-3下列的事件类中,所有事件类的父类是()
A.AWTEvent类
B.EventObject类
C.ActionEvent类
D.InputEvent类
5-4在AWT组件层次关系图中,属于容器组件的子类的是()
A.List
B.TextArea
C.Frame
D.Choice
5-5下列的容器中。
没有边框和标题并可以作最顶层容器的是()
A.Window
B.Fram
C.Panel
D.无
2.判断题
5-1容器中的若干组件是由该容器的布局管理器来确定其位置的。
5-2很多事件类都在java.awt.event包中。
5-3容器类(Container)不是组件类(Componenet)的子类。
5-4Window类和Frame类得默认布局管理器都是FlowLayout。
5-5菜单组件包含一个菜单条,每个菜单条又包含若干个菜单项,每个菜单项还可以再含有若干个菜单子项。
3.分析程序的输出结果
5-1程序内容如下:
importjava.awt.*;
importjava.awt.event.*;
publicclassTest5_1implementsActionListener
{
Framef;
PopupMenupm;
Buttonb1,b2;
publicstaticvoidmain(Stringargs[])
{
Test5_1mywin=newTest5_1();
mywin.int();
}
Voidint()
{
f=newFram(“这是我的窗口”);
b1=newButton(“弹出菜单”);
b2=newButton(“退出”);
b1.addActionListener(this);
b2.addActionListener(this);
f.add(b1,”West”);
f.add(b2,”East”);
pm=newPopupMenu(“弹出窗口”);
pm.add(newMenuItem(“保存”));
pm.add(newMenuItem(“打印”));
pm.add(newMenuItem(“浏览”));
pm.add(newMenuItem(“打开”));
pm.add(newMenuItem(“关闭”));
f.add(pm);
f.setSize(400,200);
f.setVisible(true);
}
PublicviodactionPerformed(ActionEvente) {
If(e.getActionCommand()==”退出”) System.exit(0);
pm.show(b1,20,20);
}
5-2程序内容如下:
importjava.applet.Applet;
importjava.awt.*;
importjava.awt.event.*;
publicclassTest5_2extendsAppletimplementsItemListener
{
CheckboxGroupcg;
Checkboxred,blue,greed;
Colorco;
publicviodinit()
{
cg=newCheckboxGroup();
co=Color.blue;
red=newCheckbox(“红色”,cg,false);
red.addItemListener(this);
add(red);
greed=newCheckbox(“绿色”,cg,false);
greed.addItemListener(this);
add(greed);
blue=newCheckbox(“蓝色”,cg,true);
blue.addItemListener(this);
add(blue);
}
publicvoiditemStateChanged(ItemEvente)
if(e.getSource()==red)
co=Color.red;
if(e.getSource()==green)
co=Color.green;
If(e.getSource()==blue)
co=Color.blue;
repaint();
}
publicvoidpaint(Graphicsg)
{
g.setColor(co);
g.drawRect(30,30,150,80);
}
}
4.编程题
编写一个简单的图形用户界面,使用Application程序和Applet程序。
要求该图形界面上至少有4中不同的组件。
5.简答题
5-1文本框与文本区有何不同?
5-2实现图形用户界面应该至少做哪3件事情?
5-3布局设计的目的是什么?它由什么来实现?
5-4什么是文本对话框?它有什么特点?。