- •Лабораторная работа 3
- •Краткие теоретические сведения
- •Компоненты Java
- •Элементы управления
- •Флажки (или переключатели)
- •Комбобокс (или выпадающие списки)
- •Полосы прокрутки
- •Текстовые компоненты
- •Контейнеры
- •Рамки, фреймы
- •Обработка событий фрейма в Java 1.1
- •Контекстные меню
- •Диалоги
- •Файловые диалоги
- •Менеджеры размещения компонентов
- •Типы менеджеров размещения
- •Выбор менеджера размещения
Элементы управления
Рассмотрим классы элементов управления. При их помощи можно создавать программы, обладающие развитым пользовательским интерфейсом. Язык Java содержит все стандартные элементы управления, которые можно обнаружить в современных компьютерных операционных системах. Элементы управления сначала создаются, затем добавляются в контейнер (объект класса Container) его методом add().
Кнопки
Кнопки (класс Button) - это устройства, которые дают возможность нажимать на них, чтобы проинициализировать некоторое действие.
Для создания кнопок необходимо в методе класса Container (или его подкласса) просто создать экземпляр объекта Button, дать ему имя и добавить его в контейнер:
Button myButtom=new Button("Click me!");
add(myButton);
или еще проще:
add(new Button("Click me!"));
Следует обратить внимание на то, что при создании кнопки не передаются координаты X, Y ее положения. Это происходит потому, что элементы управления, как и все устройства, размещаются на экране в соответствии с правилами, определяемыми менеджерами компоновки (размещения): при этом координаты не используются.
Создать кнопку можно с заданной меткой (строкой), а можно и без нее. Для этого предназначены соответствующие конструкторы Button()иButton(String label). Для изменения и получения метки кнопки существуют методыsetLabel()иgetLabel()соответственно.
Обработка событий от кнопки в Java 1.1
При нажатии пользователем на кнопку генерируется событие ActionEvent. Для обработки этого события используется интерфейс ActionListener, а метод этого интерфейса - actionPerformed ( см. предыдущую работу). Поскольку метод в интерфейсе всего один, не имеет смысла использовать Adapter. Например, обработку событий от нажатия на кнопку можно реализовать следующим образом:
// вставили кнопку и изменили ее цвет
Button myButtom=new Button("Click me!");
myButton.setBackground(java.awt.Color.white);
add(myButton);
// добавили обработку события
myButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e ) {
// обработка события нажатия на кнопку
myButton.setBackground(java.awt.Color.red);
myButton.setLabel("Щелкнули на кнопке");
}
}
//...
Флажки (или переключатели)
Язык Java поддерживает два типа флажков-переключателей (класс Checkbox): исключающие и неисключающие.
Неисключающие флажки (переключатели с независимой фиксацией)могут быть выбраны независимо от состояния других флажков. Такие флажки являются самостоятельными объектами класса Checkbox, для их создания используются конструкторыCheckbox()иCheckbox(String label).
Исключающиефлажки (переключатели с зависимой фиксацией) позволяют одновременно выбрать только один элемент в группе флажков. Если выбирается другой элемент в группе, то выбор предыдущего флажка отменяется, а новый выбор выделяется. Для создания такой группы флажков сначала создается объект классаCheckboxGroup, а затем создаются объекты класса Checkboх, входящие в эту группу, для чего используется конструкторCheckbox(String label, CheckboxGroup group, boolean state).
Приведем фрагмент программного кода, в котором создаются один независимый флажок и группа из трех исключающих флажков:
// создание одного независимого флажка и добавление его в контейнер
add(new Checkbox("It is checkbox"));
// создание группы флажков
CheckboxGroup gr=new CheckboxGroup();
// создание флажков группы gr и добавление их в контейнер
Checkboх first, second, third;
// флажок сброшен
first=new Checkbox("1st checkbox from group",gr,false);
add(first);
// флажок установлен
second=new Checkbox("2nd checkbox from group",gr,true);
add(second);
// флажок сброшен
third=new Checkbox("3rd checkbox from group",gr,false);
add(third);
Класс CheckboxGroupсодержит методы для определения текущего выбора и установки нового выбора для флажков группы. МетодgetCurrent()возвращает ссылку на выбранный флажок группы, а методsetCurrent()переносит выбор на задаваемый флажок группы.
При помощи методов класса getLabel()иgetState()классаCheckboxможно получить метку флажка и текущее состояние переключателя, а при помощи методовsetLabel()иsetState() изменить метку флажка установить состояние флажка.
Для проверки того, какой группе флажков принадлежит флажок, класса Checkboxсодержит методgetCheckboxGroup(), а для того, чтобы поместить ранее созданный независимый флажок в группу, или для изменения группы, в которую теперь будет входить флажок, используется методsetCheckboxGroup().
Обработка событий от флажка в Java 1.1
При изменении состояния переключателя (CheckBox) генерируется событие ItemEvent. Интерфейс для обработки - ItemListener, в нем один метод - itemStateChanged(). Для обработки этого события нет смысла использовать Adapter:
Checkbox myCheckbox=new Checkbox("Флажок");
add(myСheckbox);
// добавили обработку события
myCheckbox.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e ) {
// обработка события
boolean i = myCheck.getState();
myButton.setLabel("Изменили состояние флажка");
}
}