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

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).

import java.awt.*;

import java.awt.event.*;

import com.borland.jbcl.layout.*;

public class Frame1 extends Frame {

public Frame1( ) {/*пустой конструктор фрейма*/ }

Апплет, выполняющийся в фрейме, может запускаться и без участия браузера - для этого в апплете необходимо описать метод main. Ниже приведен пример апплета, выполняющегося в фрейме, содержащего строку меню и отображающего диалоговое окно перед началом работы.

public static void main(String[] args) {

final Frame1 myFrame = new Frame1( ); // создание фрейма

final easy myApplet = new easy(); // создание апплета для отображения в фрейме

myApplet.init(); myApplet.start(); // инициализация и запуск апплета

myFrame.setLayout(new XYLayout( ) ); // задание менеджера расположения для фрейма

myFrame.add(myApplet); // добавление апплета в фрейм

myFrame.resize(290,290); // изменение размера фрейма

MenuBar myBar = new MenuBar( ); // создание строки меню

myFrame.setMenuBar(myBar); // добавление строки меню в фрейм

Menu fileMenu = new Menu ("Файл"); // создание меню "Файл"

myBar.add(fileMenu); // добавление меню "Файл" в строку меню

Menultem open = new Menultem ("Открыть");// создание команды "Открыть"

open.addActionListener(new java.awt.event.ActionListener() { // обработчик события команды "Открыть" public void actionPerformed(ActionEvent e) { myApplet.info.setText("Вы выбрали Открыть");}

});

fileMenu.add(open); // добавление команды "Открыть" в меню "Файл"

// создание пункта меню, который можно отмечать флажком final CheckboxMenultem autoSave = new CheckboxMenultem ("Автосохранение"); autoSave.addItemListener(new java.awt.event.ItemListener() { // обработчик события изменения флажка public void itemStateChanged(ItemEvent e) {

if (autoSave.getState()){myApplet.info.setText("Автосохранение включено");} if (!autoSave.getState()){myApplet.info.setText("Автосохранение отключено");}

}});

fileMenu.add(autoSave); // добавление команды меню "Автосохранение"

fileMenu.addSeparator(); // добавление разделителя меню

Menu subMenu = new Menu ("Подменю"); // создание подменю fileMenu.add(subMenu); // добавление подменю в меню "Файл"

Menultem Close = new Menultem ("Закрыть"); // создание команды меню "Закрыть" subMenu.add(Close); // добавление команды "Закрыть" в подменю

Close.disable(); // отключение команды "Закрыть"

Close.addActionListener(new java.awt.event.ActionListener( ) { // обработка выбора команды "Закрыть" public void actionPerformed(ActionEvent e) { myFrame.hide( ); }

});

myFrame.show(); // отображение фрейма

// создание диалога. true указывает на то, что диалог модальный final Dialog myDialog = new Dialog(myFrame, "Заголовок диалога", true); myDialog.setLayout(new FlowLayout()); // менеджер расположения для диалога

myDialog.add(new Label("Нажмите ОК для начала работы с апплетом ...")); // добавление надписи Button OK = new Button("OK"); // создание кнопки OK

OK.addMouseListener(new java.awt.event.MouseAdapter() { // обработчик события нажатия кнопки OK public void mouseClicked(MouseEvent e) {myDialog.hide();} }); // закрывает диалог

myDialog.add(OK); // добавление кнопки OK в диалог

myDialog.pack(); // "ужимает" диалог до минимально необходимых размеров

myDialog.setResizable(false); // запрет изменения размера окна диалога

myDialog.show(); // отображение диалога

}}

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