《Java程序设计精典教程》习题答案 编著:胡伏湘,雷军环 清华大学出版社 第6章习题解答

一、 简答题

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所示的界面。

图6-20                      图6-21

参考代码如下:
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();
  }

}   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值