- •Лабораторная работа 3
- •Краткие теоретические сведения
- •Компоненты Java
- •Элементы управления
- •Флажки (или переключатели)
- •Комбобокс (или выпадающие списки)
- •Полосы прокрутки
- •Текстовые компоненты
- •Контейнеры
- •Рамки, фреймы
- •Обработка событий фрейма в Java 1.1
- •Контекстные меню
- •Диалоги
- •Файловые диалоги
- •Менеджеры размещения компонентов
- •Типы менеджеров размещения
- •Выбор менеджера размещения
Текстовые компоненты
Поля редактирования типа TextArea может использоваться как для вывода, так и для ввода и редактирования текста. Поля редактирования этого типа состоят из нескольких строк текста и имеют полосы прокрутки. Напротив, поля редактирования типа TextField состоят из одной строки и не имеют полос прокрутки. Оба этих класса являются наследниками класса TextComponent и, за исключением упомянутых различий, во всем аналогичны друг другу.
Текстовые компоненты TextComponent
Так как классы TextArea и TextField являются подклассами TextComponent, то они могут пользоваться его методами. Рассмотрим некоторые методы класса TextComponent. Вывести текст в поле редактирования или получить текст из поля можно методамиsetText() иgetText()соответственно. Для выделения фрагмента текста, расположенного между указанными начальным и конечными символами, применяется методselect()(для выделения всего текста используется методselectAll()), а для получения номеров первого и последнего выделенных символов - методыgetSelectionStart() иgetSelectionEnd(). Для получения выделенного в содержимом поля фрагмента текста используется методgetSelectedText(). Запретить или разрешить редактирование в поле можно при помощи методаsetEditable(), а проверить, разрешено ли редактирование - методомisEditable().
Поле редактирования TextField
Для создания поля, в котором пользователь может ввести небольшой объем информации (одну строку текста), удобно пользоваться однострочным полем редактирования (текстовым полем)TextField. Например, создадим поле редактирования шириной 20 символов, инициализированной строкой "Enter text":
TextField tField=new TextField("Enter text",20);
add(tField);
Для получения информации о том, какова ширина текстового поля в символах, используется метод getColums().
Текстовые поля поддерживают ввод маскируемых символов, т.е. символов, ввод которых на экране отображается каким-либо одним символом (эхо-символом), а не фактически вводимыми символами. Для установки такого эхо-символа используется метод setEchoCharacter(), а для того, чтобы определить, какой символ используется в качестве эхо-символа, - методgetEchoChar(). Для проверки того, имеет ли поле эхо-символ, применяется методechoCharIsSet().
Обработка событий от текстовых полей в Java 1.1
При работе с текстовыми полями можно использовать события ActionEvent и TextEvent. Первое вырабатыватеся, когда пользователь нажал клавишу <Enter>, а второе - при изменении текста. Первое событие прослушивается ActionListener, а второе - TextListener. Оба интерфейса имеют по одному методу, поэтому механизм обработки событий прост. Для текстовой области используется событие TextEvent.
TextField textField1 = new TextField(); TextArea textArea1 = new TextArea(); textField1.setText("textField1"); textField1.addTextListener(new java.awt.event.TextListener() { public void textValueChanged(TextEvent e) { button1.setLabel("Изменяем текст в поле"); } }); textField1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { button1.setLabel("Изменили текст в поле"); } }); textArea1.setText("textArea1"); textArea1.addTextListener(new java.awt.event.TextListener() { public void textValueChanged(TextEvent e) { button1.setLabel("Изменяем текст в области"); } }); Для более полного знакомства с классом TextEvent рекомендуется посмотреть справку.