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

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

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

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

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

Назад Вперед

3.10. Текстовые поля класса TextField

В примере мы показали применение редактируемого текстового поля класса TextField для ввода адреса URL документа HTML с последующей загрузкой этого документа в окно браузера.

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

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

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

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

Текстовое поле класса TextField может быть использовано для ввода одной строки текста, такой как имя пользователя, адрес URL или чего-нибудь еще.

Конструкторы класса TextField допускают указание начальной ширины поля в символах, а также предварительную инициализацию заданной текстовой строкой.

Если введенные символы не должны отображаться на экране, вы можете указать с помощью метода setEchoCharacter символ замены, такой как, например, звездочка "*". При этом поле может применяться для ввода паролей и другой информации, появление которой на экране в открытом виде нежелательно.

Набор методов класса TextField дополняется методами класса TextComponent, от которого этот класс произошел. Это не только методы setText и getText, предназначенные для установки содержимого всего текстового поля и его извлечения, но и методы, позволяющие работать с выделенными фрагментами текста.

Например, метод getSelectedText позволяет извлечь фрагмент текста, выделенной пользователем в окне редактирования. С помощью методов getSelectionStart и getSelectionEnd нетрудно определить границы выделенной области.

В классе TextComponent есть также методы, предназначенные для выделения всего текста (метод selectAll) или заданного фрагмента текста (select).

В любой момент времени с помощью метода setEditable вы можете включить или отключить возможность редактирования содержимого поля. Поле класса TextField с отключенным редактированием по своим функциональным возможностям аналогично полю класса Label.

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

В окне аплета мы расположили однострочное поле редактирования текста и кнопку с надписью Go (рис. 1).

pic1.gif (1532 bytes)

Рис. 1. Окно аплета с однострочным полем редактирования текста

Если ввести в этом поле адрес URL и нажать кнопку, аплет предпримет попытку загрузить документ HTML с указанным адресом в окно браузера.

Поля главного класса

В главном классе нашего аплета мы определили два поля:

TextField txtfURL;
Button btnGo;

Поле txtfURL хранит ссылку на однострочный редактор текста, а поле btnGo - на кнопку с надписью Go.

Метод init

При инициализации аплета метод init создает однострочное поле редактирования текста шириной 35 символов и записывает в него строку обозначения протокола HTTP:

txtfURL = new TextField("http://", 35);

Пользователю только остается ввести в этом поле адрес URL документа HTML для загрузки.

Затем метод init создает кнопку:

btnGo = new Button("Go!");

Текстовое поле и кнопка добавляются в окно аплета методом add:

add(txtfURL);
add(btnGo);

В конце своей работы метод init изменяет цвет фона окна аплета на желтый:

setBackground(Color.yellow);

Метод action

Когда пользователь нажимает кнопку Go, метод action извлекает текстовую строку введенного адреса URL из поля txtfURL. Для этого используется метод getText:

public boolean action(Event evt, Object obj)
{
  if(evt.target instanceof Button)
  {
    if(evt.target.equals(btnGo))
    {
      goURL(txtfURL.getText());
      return true;
    }
  }
  return false;
}

Извлеченная строка затем передается методу goURL, загружающему в окно браузера документ с введенным адресом.

Метод goURL

Исходный текст метода goURL представлен ниже:

public void goURL(String szURL)
{
  if(szURL != null)
  {
    URL url = null;
    AppletContext appletContext;
    appletContext = getAppletContext();

    try
    {
      url = new URL(szURL);
    }
    catch (MalformedURLException e) { }

    if (url != null)
    {
      appletContext.showDocument(
        url, "_self");
    }
  }
}

Прежде всего, метод проверяет строку адреса, переданную ему через параметр, на равенство значению null.

Если строка пустая, метод не предпринимает никаких действий. В противном случае метод goURL получает контекст выполнения аплета (то есть контекст браузера), пользуясь для этого методом getAppletContext. Он используется впоследствии для вызова метода showDocument, загружающего в окно браузера новый документ HTML.

Адрес загружаемого документа формируется как объект класса URL с обработкой возможных исключений класса MalformedURLException.


Назад Вперед

[Назад]