Текст, находящийся в поле, хранится как объект класса string, поэтому у каждого символа есть индекс (у первого — индекс 0). Индекс используется для определения позиции курсора (caret) методом getCaretPosition (), для установки позиции курсора методом
setCaretPosition(int ind) и для выделения текста.
Текст выделяется, как обычно, мышью или клавишами со стрелками при нажатой клавише
Весь текст выделяет метод selectAll (). Можно отметить начало выделения методом
setSelectionStart(int ind);
и конец выделения методом
setSelectionEnd(int ind);
Важнее все-таки не задать, а получить выделенный текст. Его возвращает метод getSelectedText (), а начальный и конечный индекс выделения возвращают методы
getSelectionStart() и getSelectionEnd().
События
Кроме событий класса Component — ComponentEvent, FocusEvent, KeyEvent, MouseEvent — при изменении текста пользователем происходит событие TextEvent.
Компонент TextField — это поле для ввода одной строки текста. Ширина поля измеряется в
ActionEvent.
В классе четыре конструктора:
□ TextField () — создает пустое поле шириной в одну колонку;
□ TextField (int columns) -создает пустое поле с числом колонок columns;
□ TextField(String text) — создает поле с текстом text;
□ TextField (String text, int columns) - создает поле с текстом text и числом колонок
columns.
К методам, унаследованным от класса Textcomponent, добавляются методы getColumns () и
setColumns(int col).
Интересная разновидность строки ввода — строка для ввода пароля. В таком поле вместо вводимых символов появляется какой-нибудь особый эхо-символ, чаще всего звездочка, чтобы пароль никто не подсмотрел из-за плеча.
Строка ввода пароля получается из обычной строки ввода после выполнения метода setEchoChar(char echo). Аргумент echo — это символ, который будет появляться в поле. Проверить, установлен ли эхо-символ, можно логическим методом echoCharIsSet (); получить эхо-символ — методом getEchoChar ( ).
Чтобы вернуть строку ввода в обычное состояние, достаточно выполнить метод
setEchoChar(0).
События
Кроме событий класса Component — ComponentEvent, FocusEvent, KeyEvent, MouseEvent — при изменении текста пользователем происходит событие TextEvent, а при нажатии клавиши
Компонент TextArea — это область ввода с произвольным числом строк. Нажатие клавиши
Основной конструктор класса,
TextArea(String text, int rows, int columns, int scrollbars);
создает область ввода с текстом text, числом видимых строк rows, числом колонок columns и заданием полос прокрутки scrollbars одной из четырех констант:
SCROLLBARS_NONE, SCROLLBARS_HORIZONTAL_ONLY, SCROLLBARS_VERTICAL_ONLY, SCROLLBARS_BOTH.
Остальные конструкторы задают некоторые параметры по умолчанию:
□ TextArea (String text, int rows, int columns) -присутствуют обе полосы прокрутки;
□ TextArea (int rows, int columns) — в поле пустая строка;
□ TextArea(string text) — размеры устанавливает контейнер;
□ TextArea ( ) -конструктор по умолчанию.
Среди методов класса TextArea наиболее важны:
□ append (string text) — добавляет текст text в конец уже введенного текста;
□ insert (String text, int pos) -вставляет текст в указанную позицию pos;
□ replaceRange(String text, int begin, int end) — удаляет текст, начиная с индекса begin включительно по end исключительно, и помещает вместо него текст text.
Другие методы позволяют изменить и получить количество видимых строк.
События
Кроме событий класса Component — ComponentEvent, FocusEvent, KeyEvent, MouseEvent — при изменении текста пользователем происходит событие TextEvent.
Рассмотрим пример. В листинге 10.3 создаются три поля (tf1, tf2, tf3 — для ввода имени пользователя, его пароля и заказа) и не редактируемая область ввода, в которой накапливается заказ. В поле ввода пароля tf2 появляется эхо-символ *. Результат показан на рис. 10.3.
import java.awt.*; import java.awt.event.*;
class TextTest extends Frame{
TextTest(String s){ super(s); setLayout(null);