Кнопки
Как мы уже говорили, стандартные кнопки
создаются на базе класса Button. Этот класс очень
простой, поэтому мы приведем полное его описание:
Класс Button
Конструкторы
В классе Button определены два конструктора,
первый из которых позволяет создавать кнопку без
надписи, а второй - кнопку с надписью. Обычно
используется второй конструктор.
public Button();
public Button(String label);
Методы
Вызов метода createButton
public void addNotify();
Получение надписи на кнопке
public String getLabel();
Получение строки параметров, отражающей
состояние кнопки
protected String paramString();
Установка надписи на кнопке
public void setLabel(String label);
Из методов класса Button вы будете использовать
чаще всего два - getLabel и setLabel. Первый из них
позволяет получить строку надписи на кнопке, а
второй - установить новую надпись.
Обычно аплет создает в своем окне кнопки в
процессе своей инициализации при обработке
метода init, например:
Button btn1;
. . .
public void init()
{
btn1 = new Button("Button 1");
add(btn1);
}
Здесь мы создали кнопку с надписью Button 1. Затем
мы добавили эту кнопку в контейнер, которым
является окно аплета, с помощью метода add.
Обработка событий от кнопки
Для обработки событий, создаваемых кнопками и
другими компонентами, вы можете переопределить
метод handleEvent. Однако существует и более простой
способ.
Этот способ основан на переопределении метода
action, который получает управление, когда
пользователь совершает какое-либо действие с
компонентом. Под действием подразумевается
нажатие на кнопку, завершение ввода текстовой
строки, выбор элемента из списка, изменение
состояния переключателя и так далее.
Прототип метода action представлен ниже:
public boolean action(Event evt, Object obj)
{
. . .
}
В качестве первого параметра методу передается
ссылка на объект класса Event, содержащий всю
информацию о событии. Второй параметр
представляет собой ссылку на объект, вызвавший
появление события.
Как обрабатывать событие в методе action?
Прежде всего необходимо проверить, объект
какого типа создал событие. Это можно сделать,
например, следующим образом:
if(evt.target instanceof Button)
{
. . .
return true;
}
return false;
Здесь мы с помощью оператора instanceof проверяем,
является ли объект, вызвавший появление события,
объектом класса Button.
Далее, если в окне аплета имеется несколько
кнопок, необходимо выполнить ветвление по
ссылкам на объекты кнопок, как это показано ниже:
if(evt.target.equals(btn1))
{
. . .
}
else if(evt.target.equals(btn2))
{
. . .
}
. . .
else
{
return false;
}
return true;
Тем из вас, кто создавал приложения Windows на
языке программирования С, этот фрагмент кода
может напомнить длинный переключатель switch
обработки сообщений Windows.
|