
- •Основные компоненты
- •Класс Component
- •Класс Container
- •Компонент Button
- •Компонент Checkbox
- •Класс CheckboxGroup
- •Компонент Choice
- •Компонент TextField
- •Компонент TextArea
- •Компонент Scrollbar
- •Контейнер Panel
- •Контейнер ScrollPane
- •Контейнер Window
- •Контейнер Framе
- •Контейнер Dialog
- •Контейнер FileDialog
- •Создание собственных компонентов
- •Компонент Canvas
- •Создание "легкого" компонента
Компонент TextField
Компонент TextField – это поле для ввода одной строки текста. Ширина поля измеряется в колонках (column). Ширина колонки – это средняя ширина символа в шрифте, которым вводится текст. Нажатие клавиши <Enter> заканчивает ввод и служит сигналом к началу обработки введенного текста, т. е. при этом происходит событие 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, а при нажатии на клавишу <Enter> – событие ActionEvent.
Компонент TextArea
Компонент TextArea – это область ввода с произвольным числом строк. Нажатие клавиши <Enter> просто переводит курсор в начало следующей строки. В области ввода могут быть установлены линейки прокрутки, одна или обе.
Основной конструктор класса
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.
Листинг 10.3. Поля ввода
import j ava.awt.*;
import j ava.awt.event.*;
class TextTest extends Frame{
TextTesttString s){
super(s);
setLayout(null);
setFont(new Font("Serif", Font.PLAIN, 14));
Label l1 = newLabel("Ваше имя:", Label.RIGHT);
l1.setBounds(20, 30, 70, 25); add(l1);
Label l2 = newLabel("Пароль:", Label.RIGHT);
l2.setBounds(20, 60, 70, 25); add(l2);
TextField tf1 = newTextField(30) ;
tf1.setBounds(100, 30, 160, 25); add(tf1);
TextField tf2 = newTextField(30);
tf2.setBounds(100, 60, 160, 25);
add(tf2); tf2.setEchoChar('*');
TextField tf3 = newTextField("Введите сюда Ваш заказ", 30);
tf3.setBounds(10, 100, 250, 30); add(tf3);
TextArea ta = newTextArea("Ваш заказ:", 5, 50,TextArea.SCROLLBARS_NONE);
ta.setEditable(false);
ta.setBounds(10, 150, 250, 140); add(ta);
Button b1 = newButton("Применить");
b1.setBounds(280, 180, 100, 30); add(b1);
Button b2 = newButton("Отменить");
b2.setBounds(280, 220, 100, 30); add(b2);
Button b3 = newButton("Выйти");
b3.setBounds(280, 260, 100, 30); add(b3);
setSize(400, 300);;
public static void main(String[] args){
Frame f = new TextTest(" Поля ввода");
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent ev){
System.exit(0);
}
});
}
}
Рис. 10.3. Поля ввода