- •Лабораторная работа 3
- •Краткие теоретические сведения
- •Компоненты Java
- •Элементы управления
- •Флажки (или переключатели)
- •Комбобокс (или выпадающие списки)
- •Полосы прокрутки
- •Текстовые компоненты
- •Контейнеры
- •Рамки, фреймы
- •Обработка событий фрейма в Java 1.1
- •Контекстные меню
- •Диалоги
- •Файловые диалоги
- •Менеджеры размещения компонентов
- •Типы менеджеров размещения
- •Выбор менеджера размещения
Комбобокс (или выпадающие списки)
Меню выбора (выпадающие списки) фактически являются всплывающими меню, они дают возможность создавать список элементов выбора, который всплывает на экране в виде меню.
Применяя меню выбора (класс Choice), можно выбирать только один элемент - множественный выбор не разрешается. При необходимости множественного выбора придется воспользоваться раскрывающимся списком (см. следующий пункт).
Приведем пример создания выпадающего списка:
// создать меню выбора
Choice choice=new Choice();
// добавить в него элементы
choice.addItem("1st item");
choice.addItem("2nd item");
// добавить меню choice в контейнер
add(choice);
// добавить в меню элемент
choice.addItem("3rd item");
Здесь сначала создается объект Choice, а затем в него задаются различные элементы выбора. Далее меню вводится в контейнер. Нужно отметить, что совсем не обязательно задавать все элементы выбора в меню до его ввода в контейнер. В контейнер можно вводить и пустое меню, добавляя элементы выбора по мере необходимости.
Рассмотрим некоторые методы класса Choice. Количество элементов выбора в меню можно определить при помощи метода countItem(), добавляются элементы в меню методомaddItem(), а получить название какого-либо элемента (его строковое представление) по его порядковому номеру можно с помощью функцииgetItem().
Для того, чтобы определить индекс и строковое представление выбранного в меню элемента, предназначены методы getSelectIndex() иgetSelectItem(). Изменить выбор в меню можно при помощи методаselect().
Обработка событий от меню выбора в Java 1.1
При изменении выбора в меню (CheckBox) генерируется событие ItemEvent. Интерфейс для обработки - ItemListener, в нем один метод - itemStateChanged(). Для обработки этого события нет смысла использовать Adapter:
// вставили переключатель
Choice myChoice=new Choice();
myChoice.addItem("Элемент 1");
myChoice.addItem("Элемент 2");
myChoice.addItem("Элемент 3");
add(myСhoice);
// добавили обработку события
myChoice.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e ) {
// обработка события
String str = myChoice.getSelectItem();
myButton.setLabel("Изменили состояние переключателя - "+str);
}
}
//...
Списки
Списки особенно полезны, если необходимо объединить функциональные возможности меню с возможностью множественного выбора элементов.
Для создания списка необходимо создать объект класса Listи ввести в него любые элементы. Затем необходимо этот объект добавить в контейнер:
// создать список с тремя видимыми элементами и с возможностью
// множественного выбора (передача true во втором параметре)
List list=new List(3, true);
// добавить в него элементы
list.addItem("1st item");
list.addItem("2nd item");
list.addItem("3rd item");
// добавить список list в контейнер
add(list);
Рассмотрим некоторые методы класса List. Количество элементов выбора в списке можно определить при помощи метода countItem(). Добавляются элементы в список методомaddItem(), удаляются из него методомdelItem(). Для очистки всего списка используется методclear(). Для того, чтобы заменить элемент с заданным номером, используется методreplaceItem(). Получить название какого-либо элемента (его строковое представление) по его порядковому номеру можно с помощью функцииgetItem().
Для того, чтобы определить индекс(ы) и строковое(ые) представление(ия) выбранного(ных) в списке элемента(ов), предназначены методы getSelectIndex() (getSelectIndexes()) иgetSelectItem()(getSelectItems()). Элемент можно выделить как выбранный в списке при помощи методаselect(). Снять выделение с помеченного элемента можно методомdeselect(). Проверить, является ли элемент выделенным, можно при помощи методаisSelected().
Методом getRows()можно определить количество одновременно видимых элементов списка (его высоту). МетодомmakeVisible()можно осуществить прокрутку в списке так, чтобы элемент с заданным индексом стал видим.
Метод setMultipleSelections()разрешает или запрещает выбор нескольких элементов одновременно, а методallowsMultipleSelections()позволяет определить, разрешен ли для списка множественный выбор.
Обработка событий от списка в Java 1.1
При выборе строки (или нескольких строк) из списка класса List пользователь делает двойной щелчок на выбранном пункте, и вырабатывается событие ActionEvent, если же пользователь просто выбрал какой-то пункт, то вырабатывается событие ItemEvent. Для прослушивания этих событий соответственно используются интерфейсы ActionListener и ItemListener. Каждый из интерфейсов имеет по одному методу, паоэтому обработку можно сделать, не используя адаптеры:
List myList=new List(3, true);
// добавить в него элементы
myList.addItem("1st item");
myList.addItem("2nd item");
myList.addItem("3rd item");
// добавить список list в контейнер
add(myList);
myList.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { String str = "Double click "+myList.getSelectedItem(); button1.setLabel(str); } }); myList.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(ItemEvent e) { String str = "State change "+myList.getSelectedItem(); button1.setLabel(str); } });