Назад
Вперед
3.9. Текстовые поля класса Label
В примере мы показали применение методов
класса Label, предназначенного для создания
простых текстовых полей. Такие поля обычно
применяются для подписывания других компонент, а
не для редактирования текста.
Исходный текст примера
Архив проекта для Java WorkShop 2.0
Демонстрация
(ваш браузер должен уметь работать с аплетами
Java)
Немного теории
Класс Label предназначен для создания простейших
не редактируемых текстовых полей. Основное
назначение таких полей - нанесение подписей под
разными элементами визуального интерфейса.
Существует три конструктора класса Label - баз
параметров, с одним параметром и с двумя
параметрами. Второй вариант позволяет задать
текст сразу при создании поля, а с помощью
третьего можно указать выравнивание этого
текста в пределах поля (по левой или правой
границе, а также центрирование).
С помощью методов класса Label можно динамически
установить в поле новый текст (метод setText) или
получить строку существующего (метод getText), а
также определить или установить выравнивание
текста (соответственно, методы getAlignment и setAlignment).
Описание примера
В окне аплета мы расположили текстовое поле и
список класса List, позволяющего изменить надпись
внутри этого поля (рис. 1).
Рис. 1. Текстовое поле и список в окне аплета
При инициализации в текстовое поле мы
записываем строку Test string и устанавливаем
центрирование.
Рассмотрим исходный текст аплета.
Поля главного класса
Здесь мы определили два поля:
Label lblTestString;
List lboxColor;
Поле lblTestString предназначено для хранения ссылки
на объект класса Label, то есть на наше текстовое
поле.
В поле lboxColor хранится ссылка на список,
управляющий содержимым текстового поля lblTestString.
Метод init
При инициализации мы создаем текстовое поле с
помощью конструктора, не имеющего параметров:
lblTestString = new Label();
Затем мы устанавливаем в поле текст Test string и
указываем, что этот текст необходимо
отцентрировать:
lblTestString.setText("Test string");
lblTestString.setAlignment(Label.CENTER);
Текст устанавливается методом setText, а
выравнивание - методом setAlignment. Заметим, что
указав методу setAlignment параметр Label.LEFT, можно
выровнять текст по левой границе, а указав
параметр Label.RIGHT - по правой.
Далее текстовое поле добавляется в окно аплета
обычным методом add:
add(lblTestString);
Чтобы управлять содержимым текстового поля мы
создаем список класса List, наполняем его и также
добавляем в окно аплета:
lboxColor = new List(5, false);
lboxColor.addItem("Red");
lboxColor.addItem("Blue");
lboxColor.addItem("White");
lboxColor.addItem("Black");
lboxColor.addItem("Yellow");
add(lboxColor);
Перед завершением своей работы метод init
устанавливает начальные значения цвета фона для
окна аплета, списка и текстового поля:
setBackground(Color.yellow);
lboxColor.setBackground(Color.green);
lblTestString.setBackground(Color.green);
Метод handleEvent
В задачу метода handleEvent входит обработка событий
от списка, управляющего содержимым текстового
поля.
Структура этого метода показана ниже:
public boolean handleEvent(Event evt)
{
List lboxChanged;
if(evt.target instanceof List)
{
lboxChanged = (List)evt.target;
if(evt.id == Event.LIST_SELECT ||
evt.id == Event.LIST_DESELECT)
{
if(lboxChanged.equals(lboxColor))
{
. . .
}
else
return false;
}
else
return false;
return true;
}
return false;
}
Здесь мы анализируем объект, вызвавший событие,
на принадлежность классу списков List. Далее мы
проверяем, связано ли событие с выделением или
отменой выделения строк списка. Если связано,
выполняется изменение содержимого текстового
поля.
Выбранная пользователем строка
определяется с помощью метода getSelectedItem:
String szColor = lboxColor.getSelectedItem();
lblTestString.setText(szColor);
Эта строка записывается затем в текстовое поле
методом setText.
Назад Вперед |