一、 简答题
1.说明文本框和标签之间的区别?
答:文本框定义了一个单行条形文本区,可以输出任何基于文本的信息,也可以接受用户的输入,并有事件响应。标签可以显示一行静态的文本,它只起信息说明作用,不接受用户的输入,无事件响应。
2.试列举Java中常用的基本控制组件。如果有二到三种取值可能,采用哪种组件合适?如果取值的可能大于5种,采用哪种组件合适?
答:基本控制组件是图形用户界面的最小单位之一,它里面不再包含其他成分。基本控制组件的作用是完成与用户的一次交互。目前常用的基本控制组件有:
标签(Label)、文本编辑区(TextField、TextArea)、按钮(Button)、复选框(Checkbox)、单选按钮(CheckboxGroup、Checkbox)、下拉列表(List或Choice)。
如果这两到三种取值是互斥的话,采用单选按钮表示比较合适,否则采用复选按钮表示;如果5种以上的取值只能多选一的话,采用Choice下拉列表,否则采用List下拉列表。
3.什么是选择事件?可能产生选择事件的GUI组件有哪些?
答:选择事件是当选择项的选中状态发生变化时所引起的事件。
可能产生选择事件的GUI组件有下拉列表类(Choice)、列表类(List)复选按钮类(CheckBox)、检测盒菜单项(CheckboxMenuItem)
4.设计一个菜单的步骤是什么?
答:设计菜单的步骤是:
用MenuBar构造函数构造菜单栏对象。
用Menu构造函数构造菜单对象。
用MenuItem构造函数构造菜单项对象。
用Menu类的add方法将菜单项加入菜单中。
用MenuBar类的add方法将菜单加菜单栏中。
用Frame类的setMenuBar方法将菜单栏加入窗口中。
5.有模式的对话框最突出的特点是什么?如果一个对话框的目的在于警告或提醒用户(例如删除数据库记录的确认),这个对话框应该是有模式的还是无模式的?
答:有模式对话框是指打开后必须作出响应的对话框。如果一个对话框的目的在于警告或提醒用户,应该为有模式的对话框。
6.Swing组件与AWT组件的区别是什么?
答:AWT组件是JDK1.0和1.1平台用于开发GUI的工具,尽管Java2平台仍然支持AWT组件,但是,使用Swing组件来开发GUI已经成为一种发展趋势。
为了标识Swing组件,Swing组件的在其名称前冠以J字母,例如,在AWT中的Button类,在Swing中为JButton。另外,AWT存在于java.awt包中,Swing组件存在于javax.swing包中。
Swing组件与AWT组件的最大不同是:Swing组件完全由Java语言实现,功能更强大,而AWT而不是。
Swing组件还提供了AWT组件无法实现的功能:
Swing按钮类和标签类除了显示文本标题,还可以显示图形标题
Swing容器可以加边框
Swing组件可以自动适应操作系统的外观,而AWT组件总是保持相同的外观
Swing组件可以设计成圆形,而不一定是矩形
通过Swing组件的方法改变其外观和形为
不能在Swing的顶层容器(如JApplet、JFrame)直接加入组件,而要先获得容器,再在容器中加入组件。
二、编程题
1.如图6-17所示。标签1的字号比文本框的字号大,当单击按钮时若输入文框中的数正确,则标签2文本显示正确,否则显示不正确。
import java.awt.*;
import java.awt.event.*;
public class program1 extends Frame implements ActionListener{
Label lb1=new Label("6+9=");
Label lb2=new Label(" ");
TextField tf=new TextField(3);
Button bt=new Button("OK");
public program1(){
lb1.setFont(new Font("Arial",Font.PLAIN,24));
setLayout(new FlowLayout());
add(lb1);
add(tf);
add(lb2);
add(bt);
bt.addActionListener(this);
setSize(150,200);
setVisible(true);
}
public void actionPerformed(ActionEvent e){
if(e.getSource()==bt)
{
String str=tf.getText();
if(str.equals("15"))
lb2.setText("正确");
else
lb2.setText("不正确");
}
}
public static void main(String args[]){
new program1();
}
}
本程序的运行结果如图6-18、6-19所示。
2.编写代码,创建一个JFrame窗口,为其构建两个单选按钮,程序运行的初始界面如图6-20所示。当用户单击“禁用”按钮时,显示图6-21所示的界面,单击“启用”按钮时,显示图6-22所示的界面。
参考代码如下:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class XT006202 extends JFrame implements ActionListener {
JRadioButton rad1,rad2;
ButtonGroup rbgrp=new ButtonGroup();
public XT006202(){
setTitle("单选按钮");
JPanel cpane=(JPanel)getContentPane();
cpane.setLayout(new GridLayout());
rad1=new JRadioButton("启用");
rad1.addActionListener(this);
rad1.setSelected(true);
rad1.setEnabled(false);
rad2=new JRadioButton("禁用");
rad2.addActionListener(this);
rad2.setSelected(false);
cpane.add(rad1);
cpane.add(rad2);
rbgrp.add(rad1);
rbgrp.add(rad2);
radadapter radapp=new radadapter();
addWindowListener(radapp);
}
class radadapter extends WindowAdapter{
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
public void actionPerformed(ActionEvent e){
if(e.getSource()==rad1){
setTitle("启用第一个单选的按钮");
rad1.setEnabled(false);
rad2.setEnabled(true);
}
else if(e.getSource()==rad2){
setTitle("启用第二个单选按钮");
rad1.setEnabled(true);
rad2.setEnabled(false);
}
}//end actionPerformed(ActionEvent e)
public static void main(String args[]){
XT006202 radb=new XT006202();
radb.setSize(200,100);
radb.setVisible(true);
}
}
3.创建一个菜单程序。添加一个菜单:文件。在“文件”下添加三个菜单选项:“功能1”、“功能2”和“退出”,“功能2”和“退出”两项之间用分隔线分开。当用户点击菜单项时,在窗口的标题栏显示相应的命令文本,如图6-23所示。(通过查阅JDK文档,思考如何用Swing创建此菜单程序)
import java.awt.*;
import java.awt.event.*;
public class XT006203 extends Frame implements ActionListener {
MenuBar mb=new MenuBar();
Menu mu=new Menu("文件");
MenuItem mt1=new MenuItem("功能1");
MenuItem mt2=new MenuItem("功能2");
MenuItem mt3=new MenuItem("退出");
public XT006203(){
mu.add(mt1);
mu.add(mt2);
mu.addSeparator();
mu.add(mt3);
mb.add(mu);
//将菜单项注册给事件监听者
mt1.addActionListener(this);
mt2.addActionListener(this);
mt3.addActionListener(this);
setMenuBar(mb);
setTitle("创建菜单");
setSize(200,200);
setVisible(true);
}
public void actionPerformed(ActionEvent e){
MenuItem mt=(MenuItem)e.getSource();
setTitle(mt.getActionCommand());
}
public static void main(String args[]){
new XT006203();
}
}