Назад
Вперед
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).
Рис. 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.
Назад Вперед |