4. 下拉式菜单(Choice)

  下拉式菜单每次只能选择其中的一项,它能够节省显示空间,适用于大量选项。
  Choice Colorchooser=new Choice();
  Colorchooser.add("Green");
  Colorchooser.add("Red");
  Colorchooser.add("Blue");
  Choice 用ItemListener接口来进行监听

 5. Canvas

  一个应用程序必须继承Canvas类才能获得有用的功能,比如创建一个自定义组件。如果想在画布上完成一些图形处理,则Canvas类中的paint()方法必须被重写。
  Canvas组件监听各种鼠标,键盘事件。当在Canvas组件中输入字符时,必须先调用requestFocus()方法。

例5.14
   import java.awt.*;
   import java.awt.event.*;
   import java.util.*;
   public class MyCanvas implements KeyListener, MouseListener {
    Canvas c; //声明一个画布对象
    String s ="";
    public static void main(String args[]) {
     Frame f=new Frame("Canvas");
     MyCanvas mc=new MyCanvas();
     mc.c=new Canvas();
     f.add("Center",mc.c);

     f.setSize(150,150);
     mc.c.addMouseListener(mc); //注册监听器
     mc.c.addKeyListener(mc); //注册监听器
     f.setVisible(true);
    }

    public void mouseClicked(MouseEvent ev){
     System.out.println("MouseClicked");
     c.requestFocus();//获得焦点,表示该窗口将接收用户的键盘和鼠标输入
    }

    public void keyTyped(KeyEvent ev) {
     System.out.println("KeyTyped");
     s+=ev.getKeyChar(); //获取每个输入的字符,依次添加到字符串s中
     c.getGraphics().drawString(s,0,20); //显示字符串s
    }

    public void keyPressed(KeyEvent ev) { System.out.println("KeyPressed"); }
    public void keyReleased(KeyEvent ev) { System.out.println("KeyReleased"); }
    public void mousePressed(MouseEvent ev) {System.out.println("MousePressed"); }
    public void mouseReleased(MouseEvent ev) {System.out.println("MouseReleased"); }
    public void mouseEntered(MouseEvent ev) {System.out.println("MouseEntered"); }
    public void mouseExited(MouseEvent ev) {System.out.println("MouseExited"); }
    }

 6. 单行文本输入区(TextField)

  只能显示一行,当回车键被按下时,会发生ActionEvent事件,可以通过ActionListener中的actionPerformed()方法对事件进行相应处理。可以使用setEditable(boolean)方法设置为只读属性。

  单行文本输入区构造方法如下:
  TextField tf1,tf2,tf3,tf4:
  tf1=new TextField();
  tf2=new TextField("",20); //显示区域为20列
  tf3=new TextField("Hello!"); //按文本区域大小显示
  tf4=new TextField("Hello!",30); //初始文本为Hello!, 显示区域为30列