Bruce Eckel’s Thinking in Java | Contents | Prev | Next |
a group of radio buttons, a drop-down
list is a way to force the user to select only one element from a group of
possibilities. However, it’s a much more compact way to accomplish this,
and it’s easier to change the elements of the list without surprising the
user. (You can change radio buttons dynamically, but that tends to be visibly
jarring).
Choice
box is not like the combo box in Windows, which lets you select from a list
or
type in your own selection. With a
Choice
box you choose one and only one element from the list. In the following
example, the
Choice
box starts with a certain number of entries and then new entries are added to
the box when a button is pressed. This allows you to see some interesting
behaviors in
Choice
boxes:
//: 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; } } ///:~
TextField
displays the “selected index,” which is the sequence number of the
currently selected element, as well as the
String
representation of the second argument of
action( ),
which is in this case the string that was selected.
you run this applet, pay attention to the determination of the size of the
Choice
box: in Windows, the size is fixed from the first time you drop down the list.
This means that if you drop down the list, then add more elements to the list,
the elements will be there but the drop-down list won’t get any longer
[57]
(you can scroll through the elements). However, if you add all the elements
before the first time the list is dropped down, then it will be sized
correctly. Of course, the user will expect to see the whole list when
it’s dropped down, so this behavior puts some significant limitations on
adding elements to
Choice
boxes.
This behavior is apparently a bug and will be fixed in a later version of Java.