Электронная библиотека книг Александра Фролова и Григория Фролова.
Shop2You.ru Создайте свой интернет-магазин
Библиотека
Братьев
Фроловых
[Назад]

Библиотека примеров приложений Java

Оглавление
Кнопки Button

Кнопки с графикой и анимацией
Кнопка в виде аплета
Переключатели класса Checkbox
Переключатели с зависимой фиксацией
Нестандартные переключатели
Списки класса Choice
Списки класса List
Поля класса Label
Поля класса TextField
Поля класса TextArea
Нестандартные текстовые поля
Кнопки и события в JDK 1.1

Линейки Scrollbar
Окно ScrollPane

Назад Вперед

3.9. Текстовые поля класса Label

В примере мы показали применение методов класса Label, предназначенного для создания простых текстовых полей. Такие поля обычно применяются для подписывания других компонент, а не для редактирования текста.

Исходный текст примера

Архив проекта для Java WorkShop 2.0

Демонстрация
(ваш браузер должен уметь работать с аплетами Java)

Немного теории

Класс Label предназначен для создания простейших не редактируемых текстовых полей. Основное назначение таких полей - нанесение подписей под разными элементами визуального интерфейса.

Существует три конструктора класса Label - баз параметров, с одним параметром и с двумя параметрами. Второй вариант позволяет задать текст сразу при создании поля, а с помощью третьего можно указать выравнивание этого текста в пределах поля (по левой или правой границе, а также центрирование).

С помощью методов класса Label можно динамически установить в поле новый текст (метод setText) или получить строку существующего (метод getText), а также определить или установить выравнивание текста (соответственно, методы getAlignment и setAlignment).

Описание примера

В окне аплета мы расположили текстовое поле и список класса List, позволяющего изменить надпись внутри этого поля (рис. 1).

pic1.gif (2040 bytes)

Рис. 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.


Назад Вперед

[Назад]