Better:
1 #use java.awt. *;
2 #use java.awt.event. *;
3 #use java.applet.Applet;
4
5 my $which = 0;
6 my ($choice, $label);
7
8 sub init {
9
10 my $this = shift;
11
12 my $drugs = ["Amitriptyline", "Prozac", "Wellbutrin",
13 "Desipramine", "Crack"];
14
15 my $religions = ["Java", "Perl", "Scheme", "C++", "Unlambda"];
16
17 my $items = \{@$drugs};
18
19 $this->setLayout (new GridLayout (1, 3));
20 $choice = new Choice ($items);
21
22 $this->add ($choice);
23 $choice->setOnChange (sub {changeLabel ()});
24
25 my $switcher = new Button ("Switch");
26 add ($switcher);
27
28 $switcher->setOnClick (
29 sub {
30 $which ^= 1;
31 my $i;
32 #changing items changes actual widget
33 $items [$i++] = $_ for ($which ? @$drugs : @$religions);
34 changeLabel ();
35 });
36
37 $label = new Label ("Nothing ... yet");
38 $this->add ($label);
39
40 }
41
42 sub changeLabel {
43 my $label = shift;
44 $item = $which ? "drug: " : "religion: " . $choice->getSelectedItem ();
45 if ($choice->getSelectedIndex () == 4) {
46 if ($which) {
47 $item .= ". It does a body good!";
48 } else {
49 $item .= ". `ks``s`k`s`kr``s`k`sikk";
50 }
51 }
52 $label->setText ($item);
53 }