Поле редактирования TextArea

Обработка событий от текстовых полей

Поле редактирования TextField

Текстовые компоненты TextComponent

Так как классы TextArea и TextField являются подклассами TextComponent, то они могут пользоваться его методами. Рассмотрим некоторые методы класса TextComponent. Вывести текст в поле редактирования или получить текст из поля можно методами setText() и getText() соответственно. Для выделения фрагмента текста, расположенного между указанными начальным и конечными символами, применяется метод select() (для выделения всего текста используется метод selectAll()), а для получения номеров первого и последнего выделенных символов - методы getSelectionStart() и getSelectionEnd(). Для получения выделенного в содержимом поля фрагмента текста используется метод getSelectedText(). Запретить или разрешить редактирование в поле можно при помощи метода setEditable(), а проверить, разрешено ли редактирование - методом isEditable().

Для создания поля, в котором пользователь может ввести небольшой объем информации (одну строку текста), удобно пользоваться однострочным полем редактирования (текстовым полем) TextField. Например, создадим поле редактирования шириной 20 символов, инициализированной строкой "Enter text":

TextField tField=new TextField("Enter text",20);

add(tField);

Для получения информации о том, какова ширина текстового поля в символах, используется метод getColums().

Текстовые поля поддерживают ввод маскируемых символов, т.е. символов, ввод которых на экране отображается каким-либо одним символом (эхо-символом), а не фактически вводимыми символами. Для установки такого эхо-символа используется метод setEchoCharacter(), а для того, чтобы определить, какой символ используется в качестве эхо-символа, - метод getEchoChar(). Для проверки того, имеет ли поле эхо-символ, применяется метод echoCharIsSet().

Для обработки событий от текстовых полей (нажатие кнопки «Enter» свидетельствует о прекращении ввода информации) следует внести в метод action() контейнера, содержащего эти текстовые поля, следующий фрагмент:

// процесс обработки событий от текстовых полей

if(evt.target instanceof TextField)

{// получаем ссылку на текстовое поле, вызвавшее событие

TextField field=(TextField)evt.target;

// проверка, от какого именно поля пришло событие и

// обработка этого события от конкретного поля

.............................................

return true; // если событие обработано, иначе return false }

Для ввода большого объема информации применяются многострочные поля редактирования (текстовые области) TextArea. Действия пользователя с данными компонентами не генерируют сообщений ACTION_EVENT. Для создания этих полей существует большой набор конструкторов, при их помощи можно создавать объекты с указанным числом строк и числом символов в строке, просто поле с указанным текстом, а также поля, обладающие всеми этими параметрами, например:

// поле высотой 5 строк и шириной 20 символов

add(TextArea tArea1=new TextArea(5,20));

// поле, инициализированное строкой "Enter text"

add(TextArea tArea2=new TextArea("Enter text"));

// поле высотой 10 строк и шириной 15 символов,

// инициализированное строкой "Enter text"

add(TextArea tArea3=new TextArea("Enter text",10,15));

Получить количество строк и число символов в строке текстовой области можно методами getRows() и getColums().

Для добавления некоторого текста в конец содержимого текстовой области используется метод appendText(), для замены текста, расположенного между символами с указанными номерами, на другой текст - метод replaceText(), а для вставки некоторого текста после символа с казанным номером - метод insertText().

3. Приложение AllElements

Задание. Создать апплет двойного назначения AllElements, в окне которого размещены различные элементы управления. При действия пользователя с этими компонентами в панели состояния должны отображаться соответствующие надписи.