Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Unix.docx
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
1.91 Mб
Скачать

10.2. Элементы управления в апплете, обработка событий.

Апплет может содержать различные элементы управления: кнопки (класс Button), флажки и переключатели (класс Chekbox), списки (класс List), выпадающие списки (класс Choice), надписи (класс Label), поля ввода (класс TextField), текстовые области (класс TextArea), раскрывающиеся и контекстные меню и др. элементы. Большинство из них определено в пакете AWT, однако возможно использование и других пакетов, например, javax.swing, com.borland.dbswing и др.

Каждый элемент управления, и апплет в целом, имеет свой список событий, происходящих при тех или иных действиях пользователя. Достаточно просто описать методы, которые будут выполняться при наступлении тех или иных событий. Примеры событий: mousePressed (кнопка мыши нажата), mouseReleased (кнопка мыши отпущена), mouseClicked (щелчок кнопкой мыши), mouseEntered (мышь вошла в границы элемента), mouseExited (мышь вышла за пределы элемента), mouseMoved (мышь перемещается над элементом), mouseDragged (мышь перемещается над элементом, удерживая нажатой кнопку мыши), keyPressed (клавишу нажали - можно определить какая), keyReleased (клавишу отпустили), keyTyped (обобщенное событие: клавиша нажата и отпущена), focusGained (элементом получен фокус),

focusLost(элементом потерян фокус), actionPerformed (обобщенное событие: произошло действие над элементом), itemStateChanged (изменилось состояние элемента - для флажков) и др.

Добавление элементов управления в апплет происходит, обычно, на стадии инициализации апплета (метод Init) по следующей общей схеме:

1) Создать и активизировать менеджер расположения

XYLayout myManager = new XYLayout( );

this.setLayout(myManager); myManager.setWidth(283); myManager.setHeight(261);

2) Создать элемент управления

Button button1 = new Button( );

3) Добавить элемент управления в апплет

this.add(button1, new XYConstraints(128, 191, 123, 25));

4) Описать процедуры обработки событий для элемента.

//установить "прослушиватель" событий мыши для кнопки button1

button1.addMouseListener(new java.awt.event.MouseAdapter() {

// при нажатии кнопки мыши вызываем метод button1_mousePressed public void mousePressed(MouseEvent e) {button1_mousePressed(e);} // при отпускании кнопки мыши вызываем метод button1_ mouseReleased public void mouseReleased(MouseEvent e){button1_mouseReleased(e);} // при щелчке кнопкой мыши вызываем метод button1_ mouseClicked public void mouseClicked(MouseEvent e) {button1_mouseClicked(e);} // конец "прослушивателя" событий мыши для кнопки button1

});

5) При возникновении событий, пользоваться свойствами и методами элемента, для манипулирования его состоянием и получения введенной пользователем информации.

// вызов этих процедур был описан на шаге 4 void button1_mousePressed(MouseEvent e) {

button1.setBackground(Color.red); // при нажатии на кнопку она становится красной }

void button1_mouseReleased(MouseEvent e) {

button1.setBackground(Color.gray); // при отпускании кнопки она становится опять серой }

void button1_mouseClicked(MouseEvent e) {

button1.setLabel("knopka was clicked by user"); // после щелчка на кнопке, надпись на ней изменяется }

* Внимание: при описании переключателей, учитывайте следующие особенностью пакета AWT: фактически в AWT есть только флажки (квадратик с галочкой), но отсутствуют переключатели (кружок с точкой). Для того, чтобы флажок стал переключателем, необходимо создать группу переключателей (класс CheckboxGroup), а затем добавить флажок к этой группе (в любой момент, только один из переключателей в группе может быть включен). Пример: CheckboxGroup Groupl = new CheckboxGroup(); Checkbox checkbox1 = new Checkbox(); checkbox1.setCheckboxGroup(Group1);

Большинство сред разработки программ на Java позволяет добавлять эти элементы визуально, а система сама будет писать исходный код, который потом необходимо будет только чуть-чуть подправить. Ниже приведен пример апплета, созданного таким образом:

import java.applet.*; // пакет необходим для любых апплетов

import java.awt.*; // пакет содержит элементы управления

import java.awt.event.*; // необходимо для обработки событий

import com.borland.jbcl.layout.*; // пакет содержит менеджер расположения XYLayout

public class easy extends Applet { boolean isStandalone = false; // апплет не может выполняться самостоятельно (в отдельном окне) XYLayout myManager = new XYLayout(); // создание менеджера расположения

List list1 = new List(); // создание списка

Button button1 = new Button("knopka"); // создание кнопки

TextArea textArea1 = new TextArea(); // создание области для ввода текста

Label label1 = new Label(); // создание надписи

TextField textField1 = new TextField(); // создание текстового поля

CheckboxGroup Group1 = new CheckboxGroup(); // создание группы переключателей Checkbox checkbox1 = new Checkbox(); // создание переключателя 1

Checkbox checkbox2 = new Checkbox(); // создание переключателя 2

Checkbox checkbox3 = new Checkbox(); // создание переключателя 3

Checkbox checkbox4 = new Checkbox(); // создание флажка 4 (не будет входить в группу Group1)

TextField info = new TextField(); // текстовое поле (можно Label ) для вывода служебной информации

public easy() { /* пустой конструктор апплета */}

public void init() { // инициализация апплета, вызывается метод jbInit и отслеживаются ошибки try {jbInit();} catch(Exception e) {e.printStackTrace();} }

private void jbInit() throws Exception { // метод, инициализирующий апплет this.setLayout(myManager); // установка менеджера расположения

myManager.setWidth(283); myManager.setHeight(261); // // ширина и высота окна менеджера

// добавление элементов управления в апплет (this) this.add(textArea1, new XYConstraints(144, 13, 121, 105)); this.add(textField1, new XYConstraints(105, 129, 161, 24)); this.add(checkbox1, new XYConstraints(17, 167, 76, 15)); this.add(checkbox2, new XYConstraints(101, 168, 76, 15)); this.add(checkbox3, new XYConstraints(185, 168, 76, 15)); this.add(checkbox4, new XYConstraints(19, 193, 85, 22));

this.add(label1, new XYConstraints(17, 125, 84, 32)); this.add(button1, new XYConstraints(128, 191, 123, 25)); this.add(info, new XYConstraints(4, 228, 275, 26)); this.add(list1, new XYConstraints(8, 12, 123, 108));

this.setBackground(Color.pink); // установка цвета фона апплета

this.setFont(new java.awt.Font("DialogInput", 1, 14)); // установка шрифта апплета

// добавление " прослушивателя" движений мышью над апплетом this.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {

public void mouseMoved(MouseEvent e) {thismouseMoved(e);}

public void mouseDragged(MouseEvent e) {thismouseDragged(e);}

// добавление "прослушивателя" щелчков мышью по апплету this.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(MouseEvent e) {thismouseClicked(e);}

});

buttonLsetBackground(Color.orange); button1.setForeground(Color.blue); // оранжевый фон, синий текст кнопки button1.setFont(new java.awt.Font("SansSerif", 3, 14)); // установление шрифта кнопки // добавление "прослушивателя" щелчков мышью по кнопке button1.addMouseListener(new java.awt.event.MouseAdapter() {

public void mousePressed(MouseEvent e) {button1_mousePressed(e);} public void mouseReleased(MouseEvent e){button1_mouseReleased(e);} public void mouseClicked(MouseEvent e) {button1_mouseClicked(e);}

});

// добавление "прослушивателя" движений мышью над апплетом button1.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {

listLsetBackground(Color.white); list1.setForeground(Color.blue); // белый фон, синие буквы в списке list1.addItem("Иванов"); list1.addItem("Петров"); list1.addItem("Сидоров"); // добавление в список фамилий // добавление " прослушивателя" событий списка, срабатывает при двойном щелчке по элементу списка list1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) {list1_actionPerformed(e);} });

textArea1.setBackground(Color.white); textArea1.setForeground(Color.blue); // белый фон, синие буквы textArea1.setText("Текстовое поле"); // текст, отображаемый в поле ввода

label1.setFont(new java.awt.Font("Dialog", 1, 14)); label1.setText("Надпись"); // форматирование надписи // описание поля ввода

textFieldLseffiackground(Color.white); textField1.setForeground(Color.blue); textField1.setComponentOrientation(null); textField1.setText(" поле ввода"); // добавление " прослушивателя" событий поля ввода textField1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) {textField1_actionPerformed(e);} });

// изменение подписей переключателей и добавление их в группу Group1 checkbox1.setLabel("флажок1"); checkbox1.setCheckboxGroup(Group1); checkbox2.setLabel("флажок2"); checkbox2.setCheckboxGroup(Group1); checkbox3.setLabel("флажок3"); checkbox3.setCheckboxGroup(Group1); checkbox2.setEnabled(false); // сделать переключатель 2 недоступным для пользователя Group1.setCurrent(checkbox1); // по умолчанию, в группе выбран первый переключатель

checkbox4.setLabel("флажок4"); // надпись для флажка 4

checkbox4.setState(true); // установить флажок 4 в значение истина (есть галочка)

// добавление " прослушивателя" событий изменения состояния флажка 4 checkbox4.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(ItemEvent e) {checkbox4_itemStateChanged(e);} });

}

public void start() { } // пустые стадии жизненного цикла апплета public void stop() { } // пустые стадии жизненного цикла апплета public void destroy() { } // пустые стадии жизненного цикла апплета

// Вызов обработчиков событий, приведенных ниже, задан в "прослушивателях" событий

void this_mouseClicked(MouseEvent e) { info.setText("Щелкнули по апплету");}

void this_mouseMoved(MouseEvent e) { info.setText(""); }

void this_mouseDragged(MouseEvent e) { info.setText("Что-то тянете :)"); }

void button1_mousePressed(MouseEvent e) { info.setText("Вы нажали кнопку"); } void button1_mouseReleased(MouseEvent e) { info.setText("Вы отпустили кнопку"); } void button1_mouseClicked(MouseEvent e) { /* ничего не делать */ } void button1_mouseMoved(MouseEvent e) { info.setText("Вы над кнопкой"); }

void checkbox4_itemStateChanged(ItemEvent e) { if (checkbox4.getState()) {info.setText("Флажок 4 установлен");} if (!checkbox4.getState()) {info.setText("Флажок 4 снят");}

}

void list1_actionPerformed(ActionEvent e) { info.setText(list1.getSelectedItem()); // выводит содержимое выбранного пользователем элемента списка

}

void textField1_actionPerformed(ActionEvent e) { info.setText(textField1.getText()); // выводит введенный пользователем текст

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]