Поле редактирования 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, в окне которого размещены различные элементы управления. При действия пользователя с этими компонентами в панели состояния должны отображаться соответствующие надписи.