(str,30,80); (fnt3); ;
(str,30,120); } }
相应的HTML文件读者自编。
4-3 编写Applet程序,在一个椭圆内填写一个字符串。椭圆大小和位置以及字符串内容和字体都由读者自定。
编写的Applet小程序的文件名为,程序内容如下: import .*;
public class pro4_3 extends Applet {
public void paint(Graphics g) {
int x0=30,y0=35,W=300,H=100; ;
(x0,y0,W,H); ;
(new Font(\ (\北京,您好!\ } }
相应的HTML文件由读者自编。
第5章 图形用户界面设计
选择题
5-1 下列关于容器的描述中,错误的是 (D) A.容器是由若干个组建和容器组成的
B.容器是对图形界面中界面元素的一种管理 C.容器是一种对指定宽和高的矩形范围 D.容器都是可以独立的窗口
5-2 下列界面元素中,不是容器的是(A)
5-3 下列关于实现图形用户界面的描述中,错误的是 (B,C) 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 在对下列语句的解释中,错误的是 (D) (this);
A.but是某种事件对象,如按钮事件对象 B.this表示当前容器
C.ActionListener是动作事件的监听者
D.该语句的功能是将but对象注册为this对象的监听者 5-6 所有事件类的父类是(B)
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 Java 2 的事件处理方法是采用委托事件处理模型。(对) 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容器。Java Applet程序只负责它拥有的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
import .*; import .*;
public class Exer5_1 extends Applet {
private Label lab1,lab2; public void init() {
lab1=new Label(); (\标签文本左对齐\ ;
lab2=new Label(\标签文本右对齐\ setLayout(new GridLayout(3,3)); add(lab1);add(lab2);
} }
运行改程序后,输出结果如图5-5所示。
图5-5 分析题5-1输出结果 5-2
import .*; import .*;
import class Exer5_2 extends Applet implements ActionListener,ItemListener {
List colList;
String colName[]={\黑色\蓝色\浅蓝色\绿色\红色\黄色\ Color cols[]={,,,,,}; int t;
public void init() {
colList=new List(4,false); (this); (this);
for(int i=0;i<;i++)
(colName[i]);
add(colList); }
public void actionPerformed(ActionEvent e) {}
public void itemStateChanged(ItemEvent e) {
showStatus()+\
t=();
repaint(); }
public void paint(Graphics g) {
(cols[t]); (15,30,20,20); }
}
运行改程序后,输出结果如图5-6所示。 5-3
import .*;
import class Exer5_3 extends Frame implements ActionListener {
Frame fr; Panel deck; CardLayout c1; Button but[];
String name[]={\第一张\下一张\前一张\最末张\ public Exer5_3() {
fr=new Frame(\卡片窗口\ deck=new Panel(); c1=new CardLayout(); (c1);
Panel c1=new Panel();
Label lab1=new Label(\卡片1\ (lab1); (c1,());
Panel c2=new Panel();
Label lab2=new Label(\卡片2\ (lab2); (c2,());
Panel c3=new Panel();
Label lab3=new Label(\卡片3\ (lab3); (c3,());
Panel c4=new Panel();
Label lab4=new Label(\卡片4\