Choice
, the Choice
fires
two ItemListener
events, one to indicate that the original selection
has been deselected and the other to indicate that a new selection has been made. You can process these events by registering an ItemListener
object with your Choice
.
You do not always need to do this. It is not uncommon to only check the value of a Choice
when some other event occurs like a Button
press.
For example, the following applet builds a Choice
menu with the numbers from 1 to 5. When the user makes a selection, the applet beeps that many times.
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class MultiBeep extends Applet {
public void init() {
Choice ch;
ch = new Choice();
ch.addItem("1");
ch.addItem("2");
ch.addItem("3");
ch.addItem("4");
ch.addItem("5");
this.add(ch);
ch.addItemListener(new BeepItem());
}
}
class BeepItem implements ItemListener {
public void itemStateChanged(ItemEvent ie) {
if (ie.getStateChange() == ItemEvent.SELECTED) {
String name = (String) ie.getItem();
Toolkit tk = Toolkit.getDefaultToolkit();
try {
int n = Integer.parseInt(name);
for (int i = 0; i < n; i++) tk.beep();
}
catch (Exception e) {
tk.beep();
}
}
}
}
The BeepItem
class implements the ItemListener
interface. It filters out events caused by items being deselected with ItemEvent.getStateChange()
and only beeps if an item was selected. The available convenience constants you can check are:
ItemEvent.DESELECTED
ItemEvent.ITEM_FIRST
ItemEvent.ITEM_LAST
ItemEvent.ITEM_STATE_CHANGED
ItemEvent.SELECTED
The ItemEvent.getItem()
method is used to retrieve the actual selected item.