Drop-down lists

Bruce Eckel’s Thinking in Java Contents | Prev | Next

//: 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;
  }
} ///:~ 

The
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.

When
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.


[57]
This behavior is apparently a bug and will be fixed in a later version of Java.

More by Author

Get the Free Newsletter!

Subscribe to Developer Insider for top news, trends & analysis

Must Read