Затем методом add(string text) в список добавляются новые пункты с текстом text. Они располагаются в порядке написания методов add () и нумеруются от нуля.
Вставить новый пункт в нужное место можно методом insert(String text, int position). Выбор пункта можно произвести из программы методом select(String text) или
select(int position).
Удаление одного пункта из списка выполняется методом remove(String text) или
remove (int position), а всех пунктов сразу-методом removeAll().
Число пунктов в списке можно узнать методом getItemCount ( ).
Выяснить, какой пункт находится в позиции pos, можно методом getItem(int pos), возвращающим строку.
Наконец, определение выбранного пункта производится методом getSelectedIndex( ), возвращающим позицию этого пункта, или методом getSelectedItem(), возвращающим выделенную строку.
В классе Choice происходят события класса Component: ComponentEvent, FocusEvent, KeyEvent, MouseEvent, а при выборе пункта возникает событие ItemEvent.
Список
Если надо показать на экране несколько пунктов списка, то создайте объект класса List.
Компонент List - это список с линейкой прокрутки, в котором можно выделить один или несколько пунктов. Количество видимых на экране пунктов определяется конструктором списка и размером компонента.
В классе три конструктора:
□ List() — создает пустой список с четырьмя видимыми пунктами;
□ List ( int rows ) -создает пустой список с rows видимыми пунктами;
□ List (int rows, boolean multiple) - создает пустой список, в котором можно отме
тить несколько пунктов, если multiple == true.
После создания объекта в список добавляются пункты с текстом item:
□ метод add (string item) — добавляет новый пункт в конец списка;
□ метод add ( String item, int position) -добавляет новый пункт в позицию position.
Позиции нумеруются по порядку, начиная с нуля.
Удалить пункт можно методами remove(String item), remove(int position), removeAll().
Метод replaceItem(String newItem, int pos)позволяет заменить текст пункта в позиции
pos.
Количество пунктов в списке возвращает метод getItemCount ( ).
Выделенный пункт можно получить методом getSelectedItem(), а его позицию — методом getSelectedIndex().
Если список позволяет осуществить множественный выбор, то выделенные пункты в виде массива типа String[] можно получить методом getSelectedItems(), а позиции выделенных пунктов в виде массива типа int [ ] -методом getSelectedIndexes ( ).
Кроме этих необходимых методов класс List содержит множество других, позволяющих манипулировать пунктами списка и получать его характеристики.
Листинг 10.2. Использование списков
import java.awt.*; import java.awt.event.*;
class ListTest extends Frame{
ListTest(String s){ super(s); setLayout(null);
setFont(new Font("Serif", Font.BOLD, 15));
Label l1 = new Label("Выберите товар:", Label.CENTER); l1.setBounds(10, 50, 120, 30); add(l1);
Label l2 = new Label("Выберите способ оплаты:");
l2.setBounds(170, 50, 200, 30); add(l2);
List l = new List(2, true); l.add("Книги"); l.add("Диски") ; l.add("Игрушки");
l.setBounds(20, 90, 100, 40); add(l);
Choice ch = new Choice(); ch.add("Почтовым переводом"); ch.add("Кредитной картой"); ch.setBounds(170, 90, 200,30); add(ch);
Button b1 = new Button("Продолжить"); b1.setBounds( 30, 150, 100, 30); add(b1);
Button b2 = new Button("Отменить");
b2.setBounds(140, 150, 100, 30); add(b2);
Button b3 = new ButtonC^bM™"); b3.setBounds(250, 150, 100, 30); add(b3);
setSize(400, 200); setVisible(true);
}
public static void main(String[] args){
Frame f = new ListTest(" Простые компоненты"); f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent ev){
System.exit(0);
}
});
}
Рис. 10.2. Использование списков |
Компоненты для ввода текста
В библиотеке AWT есть два компонента для ввода текста с клавиатуры: компонент TextField, позволяющий ввести только одну строку, и компонент TextArea, в который можно ввести множество строк.
Оба класса расширяют класс Textcomponent, в котором собраны их общие методы, такие как выделение текста, позиционирование курсора, получение текста.
Класс
В классе Textcomponent нет конструктора, этот класс не используется самостоятельно.
Основной метод класса — getText () — возвращает в виде строки string текст, находящийся в поле ввода.
Поле ввода может быть нередактируемым, в этом состоянии текст в поле нельзя изменить с клавиатуры или мышью. Узнать состояние поля можно логическим методом
isEditable ( ), изменить значения в нем — методом setEditable(boolean editable).