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

Microsoft Visual J++. Создание приложений и аплетов на языке Java. Часть 1

© Александр Фролов, Григорий Фролов
Том 30, М.: Диалог-МИФИ, 1997, 288 стр.

[Назад] [Содеожание] [Дальше]

Приложение TextLabel

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

Рис. 5.11. Окно приложения TextLabel

Нажимая кнопки, вы можете заметить, как строка, расположенная под ними, немного сдвигается по горизонтали.

Исходные тексты приложения

Исходный текст приложения TextLabel приведен в листинге 5.9.

Листинг 5.9. Файл TextLabel\TextLabel.java


// =========================================================
// Работа с компонентами Label
//
// (C) Фролов А.В, 1997
//
// E-mail: frolov@glas.apc.org
// WWW:    http://www.glasnet.ru/~frolov
//            или
//         http://www.dials.ccas.ru/frolov
// =========================================================
import java.applet.*;
import java.awt.*;

public class TextLabel extends Applet
{
  // Создаем ссылку на объекты типа Label
  Label lbTextLabel;

  // Создаем три ссылки на объекты типа Button
  Button btnLeft;
  Button btnCenter;
  Button btnRight;

  // -------------------------------------------------------
  // getAppletInfo
  // Метод, возвращающей строку информации об аплете
  // -------------------------------------------------------
  public String getAppletInfo()
  {
    return "Name: TextLabel\r\n" +
      "Author: Alexandr Frolov\r\n" +
      "E-mail: frolov@glas.apc.org" +
      "WWW:    http://www.glasnet.ru/~frolov" +
      "Created with Microsoft Visual J++ Version 1.0";
  }

  // -------------------------------------------------------
  // init
  // Метод, получающий управление при инициализации аплета
  // -------------------------------------------------------
  public void init()
  {
    // Создаем компоненту Label
    lbTextLabel = new Label("Выберите выравнивание");

    // Создаем три кнопки
    btnLeft   = new Button("Влево");
    btnCenter = new Button("Центровка");
    btnRight  = new Button("Вправо");

    // Добавляем три кнопки
    add(btnLeft);
    add(btnCenter);
    add(btnRight);

    // Добавляем компоненту Label
    add(lbTextLabel);

    // Устанавливаем цвет фона
    setBackground(Color.yellow);
}

  // -------------------------------------------------------
  // action
  // Метод вызывается, когда пользователь выполняет
  // действие над компонентами
  // -------------------------------------------------------
  public boolean action(Event evt, Object obj)
  {
    // Ссылка на кнопку, от которой пришло сообщение
    Button btn;

    // Проверяем, что событие вызвано кнопкой, а не
    // другим компонентом
    if(evt.target instanceof Button)
    {
      // Получам ссылку на кнопку, вызвавшую событие
      btn = (Button)evt.target;

      // Выполняем ветвление по кнопкам
      if(evt.target.equals(btnLeft))
      {
        // Выравниваем текст компоненты Label 
        // по левой границе
        lbTextLabel.setAlignment(Label.LEFT);
      }

      else if(evt.target.equals(btnCenter))
      {
        // Центруем текст компоненты Label 
        lbTextLabel.setAlignment(Label.CENTER);
      }

      else if(evt.target.equals(btnRight))
      {
        // Выравниваем текст компоненты Label 
        // по правой границе
        lbTextLabel.setAlignment(Label.RIGHT);
      }
      
      // Если событие возникло от неизвестной кнопки,
      // мы его не обрабатываем
      else
      {
        return false;
      }

      // Возвращаем признак того, что мы обработали событие
      return true;
    }

    // Если событие вызвано не кнопкой, 
    // мы его не обрабатываем
    return false;
  }
      
  // -------------------------------------------------------
  // paint
  // Метод paint, выполняющий рисование в окне аплета
  // -------------------------------------------------------
  public void paint(Graphics g)
  {
    // Определяем текущие размеры окна аплета
    Dimension dimAppWndDimension = size();
    
    // Выбираем в контекст отображения черный цвет
    g.setColor(Color.black);

    // Рисуем рамку вокруг окна аплета
    g.drawRect(0, 0, 
      dimAppWndDimension.width  - 1, 
      dimAppWndDimension.height - 1);
  }
}

Исходный текст документа HTML, созданного для размещения аплета, представлен в листинге 5.10.

Листинг 5.10. Файл TextLabel\TextLabel.html


<html>
<head>
<title>TextLabel</title>
</head>
<body>
<hr>
<applet
    code=TextLabel.class
    id=TextLabel
    width=320
    height=240 >
</applet>
<hr>
<a href="TextLabel.java">The source.</a>
</body>
</html>

Описание исходного текста

В классе TextLabel мы определили четыре поля и несколько методов.

Поля класса TextLabel

Мы определили четыре поля - lbTextLabel, btnLeft, btnCenter и btnRight:


Label lbTextLabel;
Button btnLeft;
Button btnCenter;
Button btnRight;

Первое из них предназначено для хранения ссылки на объект класса Label (однострочное текстовое поле), остальные три - для хранения ссылок на кнопки, определяющие выравнивание.

Метод getAppletInfo

Метод getAppletInfo возвращает информацию о нашем аплете.

Метод init

Метод init создает одно текстовое поле, вызывая конструктор с одним параметром - текстовой строкой:


lbTextLabel = new Label("Выберите выравнивание");

Далее этот метод создает три кнопки, с помощью которых вы будете изменять выравнивание текста в поле класса Label:


btnLeft   = new Button("Влево");
btnCenter = new Button("Центровка");
btnRight  = new Button("Вправо");

Затем созданные кнопки и поле добавляются в окно аплета при помощи метода add:


add(btnLeft);
add(btnCenter);
add(btnRight);
add(lbTextLabel);

Последнее, что делает метод init перед возвращением управления, это изменение цвета фона:


setBackground(Color.yellow);

Метод action

Наш метод action обрабатывает только те события, которые вызваны кнопками. Проверка источника события выполняется так же, как и раньше, поэтому мы не будем на этом останавливаться.

Что же касается установки выравнивания, то она выполняется при помощи метода setAlignment:


if(evt.target.equals(btnLeft))
  lbTextLabel.setAlignment(Label.LEFT);
else if(evt.target.equals(btnCenter))
  lbTextLabel.setAlignment(Label.CENTER);
else if(evt.target.equals(btnRight))
  lbTextLabel.setAlignment(Label.RIGHT);
else
  return false;

Метод paint

Единственное, что делает метод paint, - это рисование рамки черного цвета вокруг окна аплета.

[Назад] [Содеожание] [Дальше]