// Файл ButtonList.java
// Распознавание объектов типа Button.
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
/*
<applet code = "ButtonList" width = 250 height = 150>
</applet>
*/
public class ButtonList extends Applet implements ActionListener {
String msg = "";
Button bList[] = new Button[3];
public void init() {
Button yes = new Button("Yes");
Button no = new Button("No");
Button maybe = new Button("Undecided") ;
// Сохранить ссылки на кнопки при их добавлении
bList[0] = (Button) add(yes);
bList[1] = (Button) add(no);
bList[2] = (Button) add(maybe);
// Регистрироваться для приема событий действия
for(int i = 0; i < 3; i++)
bList[i].addActionListener(this);
}
public void actionPerformed(ActionEvent ae) {
for(int i = 0; i < 3; i++)
if (ae.getSource() == bList [i])
msg = "You pressed " + bList[i].getLabel();
repaint() ;
}
public void paint(Graphics g) {
g.drawString(msg, 6, 100);
}
}
В этой версии программа сохраняет каждую ссылку кнопки в массиве bList[], когда кнопки добавляются к окну апплета. (Напомним, что метод add() возвращает ссылку на добавляемую кнопку.) Затем этот массив используется внутри метода actionPerformed(), чтобы определить, какая кнопка была нажата.
Для простых апплетов обычно проще распознать кнопки по их меткам. Однако в ситуациях, когда требуется изменять метку кнопки во время выполнения программы, или при использовании кнопок, которые имеют одинаковые метки, может оказаться проще определить нажатую кнопку, используя ее ссылку на объект.