Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Объекты интерфейса.doc
Скачиваний:
10
Добавлен:
02.02.2015
Размер:
371.71 Кб
Скачать

Компонент 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. Поля ввода