Лекции (989962), страница 58
Текст из файла (страница 58)
Для того, чтобы флажок стал переключателем, необходимо создать группу переключателей(класс CheckboxGroup), а затем добавить флажок к этой группе (в любой момент, только один изпереключателей в группе может быть включен). Пример: CheckboxGroup Group1 = new CheckboxGroup();Checkbox checkbox1 = new Checkbox(); checkbox1.setCheckboxGroup(Group1);Большинство сред разработки программ на Java позволяет добавлять эти элементы визуально, а системасама будет писать исходный код, который потом необходимо будет только чуть-чуть подправить.
Нижеприведен пример апплета, созданного таким образом: Ляхевич А.Г., 2000 - 2002 годИсходный текст апплета приведен ниже: Ляхевич А.Г., 2000 - 2002 годimport java.applet.*;import java.awt.*;import java.awt.event.*;import com.borland.jbcl.layout.*;// пакет необходим для любых апплетов// пакет содержит элементы управления// необходимо для обработки событий// пакет содержит менеджер расположения XYLayoutpublic 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();// создание переключателя 1Checkbox checkbox2 = new Checkbox();// создание переключателя 2Checkbox checkbox3 = new Checkbox();// создание переключателя 3Checkbox 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) {this_mouseMoved(e);}public void mouseDragged(MouseEvent e) {this_mouseDragged(e);}});// добавление "прослушивателя" щелчков мышью по апплетуthis.addMouseListener(new java.awt.event.MouseAdapter() {public void mouseClicked(MouseEvent e) {this_mouseClicked(e);}});button1.setBackground(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() { Ляхевич А.Г., 2000 - 2002 годpublic void mouseMoved(MouseEvent e) {button1_mouseMoved(e);} });list1.setBackground(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("Надпись"); // форматирование надписи// описание поля вводаtextField1.setBackground(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);} });// изменение подписей переключателей и добавление их в группу Group1checkbox1.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"); // надпись для флажка 4checkbox4.setState(true);// установить флажок 4 в значение истина (есть галочка)// добавление "прослушивателя" событий изменения состояния флажка 4checkbox4.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());// выводит введенный пользователем текст}} Ляхевич А.Г., 2000 - 2002 год10.4.
Фреймы, меню, диалоговые окна.Обычно апплет выполняется непосредственно в контексте HTML-страницы. Однако апплет может выполняться и в отдельном окне, называемом фрейм. Фрейм создается на основании класса Frame из пакета AWT.Последовательность действий при создании фрейма такова:1) Создать пустой фрейм.2) Задать для фрейма менеджер расположения и размеры окна фрейма.3) Создать апплет, который будет отображаться в фрейме.4) Проинициализировать и запустить апплет.5) Добавить апплет во фрейм.6) Отобразить фрейм (метод show).Фрейм может иметь собственное меню (классы: MenuBar – строка меню, Menu – меню, MenuItem – командаменю, CheckboxMenuItem – команда меню, которую можно отмечать флажком).
Для создания менюнеобходимо:1) Создать строку меню и добавить ее в фрейм.2) Создать меню и добавить его в строку меню.3) Создать команду меню, описать для нее обработчик события и добавить ее в меню.4) Создать вложенные подменю и добавить их в меню.Фрейм может создавать и использовать собственные диалоговые окна. Диалоговое окно создается только наосновании фрейма.
Апплет не может непосредственно создать диалоговое окно. Диалоговое окно можетбыть модальным – пока оно не будет закрыто, работа с фреймом будет невозможна. Диалоговое окносоздается на основании класса Dialog. Для создания диалогового окна необходимо:1) Создать диалоговое окно.2) Задать для диалогового окна менеджер расположения.3) Добавить в окно элементы (кнопки, надписи, флажки и т.д.) и описать обработчики событий элементов.4) Подогнать размер диалогового окна под отображаемые элементы (метод pack) и запретить изменениеразмеров окна.5) Отобразить диалоговое окно (метод show).Апплет, выполняющийся в фрейме, может запускаться и без участия браузера – для этого в апплетенеобходимо описать метод main.