下拉列表像一個單選鈕組,它是強制用戶從一組可實現的選擇中選擇一個對象的方法。而且,它是一個實現這點的相當簡潔的方法,也最易改變選擇而不至使用戶感到吃力(我們可以動態地改變單選鈕,但那種方法顯然不方便)。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以後的版本裡解決。