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

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

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

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

Приложение TxtField

В приложении TxtField мы создали однострочное поле редактирования на базе класса TextField и кнопку, с помощью которой можно извлечь текст из поля для отображения (рис. 5.12).

Рис. 5.12. Окно аплета TxtField

Изменив текст в поле редактирования, нажмите кнопку “Получить строку”. В нижней части окна аплета вы увидите измененный вами текст.

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

Исходные тексты приложения TxtField представлены в листинге 5.11.

Листинг 5.11. Файл TxtField\TxtField.java


// =========================================================
// Однострочное текстовое поле класса TextField
//
// (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 TxtField extends Applet
{
  // Создаем ссылку на объекты типа TextField
  TextField txt;

  // Создаем ссылку на объекты типа Button
  Button btnGetText;

  // Строка для хранения введенных данных
  String str;

  // -------------------------------------------------------
  // getAppletInfo
  // Метод, возвращающей строку информации об аплете
  // -------------------------------------------------------
  public String getAppletInfo()
  {
    return "Name: TxtField\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()
  {
    // Создаем редактируемое однострочное текстовое поле
    txt = new TextField("Введите строку текста", 35);

    // Создаем кнопку, с помощью которой можно получить
    // содержимое текстового поля
    btnGetText = new Button("Получить строку");

    // Добавляем текстовое поле в окно аплете
    add(txt);
    
    // Добавляем кнопку в окно аплете
    add(btnGetText);

    // Получаем и сохраняем текущий текст,
    // установленный в поле
    str = txt.getText();

    // Устанавливаем цвет фона
    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(btnGetText))
      {
        // Получаем и сохраняем текущий текст,
        // установленный в поле
        str = txt.getText();

        // Перерисовываем окно аплета
        repaint();
      }

      // Если событие возникло от неизвестной кнопки,
      // мы его не обрабатываем
      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);

    // Рисуем строку, полученную из текстового поля
    g.drawString("> " + str, 10, 100);
  }
}

Документ HTML, созданный для нашего аплета, представлен в листинге 5.12.

Листинг 5.12. Файл TxtField\TxtField.html


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

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

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

Поля класса TxtField

В поле txt хранится ссылка на объект класса TextField - наше однострочное поле редактирования:


TextField txt;

В полях btnGetText и str хрянятся, соответственно, ссылки на кнопку и текстовую строку, в которую записывается текущее содержимое поля редактирования:


Button btnGetText;
String str;

Метод getAppletInfo

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

Метод init

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


txt = new TextField("Введите строку текста", 35);

Далее этот метод создает кнопку, с помощью которой можно получить текущее содержимое поля редактирования:


btnGetText = new Button("Получить строку");

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


add(txt);
add(btnGetText);

После этого метод init получает текущее содержимое поля редактирования и записывает его в строку str:


str = txt.getText();

В завершении метод init изменяет цвет фона:


setBackground(Color.yellow);

Метод action

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

Обработка заключается в извлечении текста из поля редактирования и записи его в строку str:


str = txt.getText();
repaint();

Метод paint

После рисования рамки черного цвета вокруг окна аплета метод paint отобаржает текущее содержимое строки str в нижней части окна:


g.drawString("> " + str, 10, 100);
[Назад] [Содеожание] [Дальше]