下拉列表像一個單選鈕組,它是強制用戶從一組可實現的選擇中選擇一個對象的方法。而且,它是一個實現這點的相當簡潔的方法,也最易改變選擇而不至使用戶感到吃力(我們可以動態地改變單選鈕,但那種方法顯然不方便)。Java的選擇框不像Windows中的組合框可以讓我從列表中選擇或輸入自己的選擇。在一個選擇框中你只能從列表中選擇僅僅一個項目。在下面的例子裡,選擇框從一個確定輸入的數字開始,然後當按下一個按鈕時,新輸入的數字增加到框裡。你將可以看到選擇框的一些有趣的狀態:
//: Choice1.java
// Using drop-down lists
import java.awt.*;
import java.applet.*;
public class Choice1 extends Applet {
String[] description = { "Ebullient", "Obtuse",
"Recalcitrant", "Brilliant", "Somnescent",
"Timorous", "Florid", "Putrescent" };
TextField t = new TextField(30);
Choice c = new Choice();
Button b = new Button("Add items");
int count = 0;
public void init() {
t.setEditable(false);
for(int i = 0; i < 4; i++)
c.addItem(description[count++]);
add(t);
add(c);
add(b);
}
public boolean action (Event evt, Object arg) {
if(evt.target.equals(c))
t.setText("index: " + c.getSelectedIndex()
+ " " + (String)arg);
else if(evt.target.equals(b)) {
if(count < description.length)
c.addItem(description[count++]);
}
else
return super.action(evt, arg);
return true;
}
} ///:~
文本字字段中顯示的“selected index,"也就是當前選擇的項目的序列號,在事件中選擇的字符串就像action()的第二個自變量的字串符描述的一樣好。
運行這個程序片時,請注意對Choice框大小的判斷:在windows裡,這個大小是在我們拉下列表時確定的。這意味著如果我們拉下列表,然後增加更多的項目到列表中,這項目將在那,但這個下拉列表不再接受(我們可以通過項目來滾動觀察——注釋④)。然而,如果我們在第一次拉下下拉列表前將所的項目裝入下拉列表,它的大小就會合適。當然,用戶在使用時希望看到整個的列表,所以會在下拉列表的狀態裡對增加項目到選擇框裡加以特殊的限定。
④:這一行為顯然是一種錯誤,會Java以後的版本裡解決。