下拉列表像一个单选钮组,它是强制用户从一组可实现的选择中选择一个对象的方法。而且,它是一个实现这点的相当简洁的方法,也最易改变选择而不至使用户感到吃力(我们可以动态地改变单选钮,但那种方法显然不方便)。Java的选择框不像Windows中的组合框可以让我从列表中选择或输入自己的选择。在一个选择框中你只能从列表中选择仅仅一个项目。在下面的例子里,选择框从一个确定输入的数字开始,然后当按下一个按钮时,新输入的数字增加到框里。你将可以看到选择框的一些有趣的状态:

    1. //: Choice1.java
    2. // Using drop-down lists
    3. import java.awt.*;
    4. import java.applet.*;
    5. public class Choice1 extends Applet {
    6. String[] description = { "Ebullient", "Obtuse",
    7. "Recalcitrant", "Brilliant", "Somnescent",
    8. "Timorous", "Florid", "Putrescent" };
    9. TextField t = new TextField(30);
    10. Choice c = new Choice();
    11. Button b = new Button("Add items");
    12. int count = 0;
    13. public void init() {
    14. t.setEditable(false);
    15. for(int i = 0; i < 4; i++)
    16. c.addItem(description[count++]);
    17. add(t);
    18. add(c);
    19. add(b);
    20. }
    21. public boolean action (Event evt, Object arg) {
    22. if(evt.target.equals(c))
    23. t.setText("index: " + c.getSelectedIndex()
    24. + " " + (String)arg);
    25. else if(evt.target.equals(b)) {
    26. if(count < description.length)
    27. c.addItem(description[count++]);
    28. }
    29. else
    30. return super.action(evt, arg);
    31. return true;
    32. }
    33. } ///:~

    文本字字段中显示的selected index,也就是当前选择的项目的序列号,在事件中选择的字符串就像action()的第二个参数的字符串符描述的一样好。

    运行这个程序片时,请注意对Choice框大小的判断:在windows里,这个大小是在我们拉下列表时确定的。这意味着如果我们拉下列表,然后增加更多的项目到列表中,这项目将在那,但这个下拉列表不再接受(我们可以通过项目来滚动观察——注释④)。然而,如果我们在第一次拉下下拉列表前将所的项目装入下拉列表,它的大小就会合适。当然,用户在使用时希望看到整个的列表,所以会在下拉列表的状态里对增加项目到选择框里加以特殊的限定。

    ④:这一行为显然是一种错误,会Java以后的版本里解决。