Читаем Java 7 полностью

class TwoFrames{

public static void main(String[] args){ Fr1 f1 = new Fr1(" Основное окно");

Fr2 f2 = new Fr2(" Второе окно");

}

}

class Fr1 extends Frame{

Fr1(String s){ super(s); setLayout(null);

Font f = new Font("Serif", Font.BOLD, 15); setFont(f);

Label l = new Label('^TO главное окно", Label.CENTER); l.setBounds(10, 30, 180, 30); add(l);

setSize(200, 100); setVisible(true);

addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent ev){

System.exit(0);

}

});

}

}

class Fr2 extends Frame{

Fr2(String s){ super(s); setLayout(null);

Font f = new Font("Serif", Font.BOLD, 15); setFont(f);

Label l = new Label('^TO второе окно", Label.CENTER); l.setBounds(10, 30, 180, 30); add(l);

setBounds(50, 50, 200, 100); setVisible(true);

addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent ev){ dispose();

}

});

}

}

Рис. 10.5. Программа с двумя окнами

На рис. 10.5 представлен вывод этой программы. Взаимное положение окон определяется оконным менеджером операционной системы и может быть не таким, какое показано на рисунке.

Контейнер Dialog

Контейнер Dialog — это окно обычно фиксированного размера, предназначенное для ответа на сообщения приложения. Оно автоматически регистрируется в оконном менеджере графической оболочки, следовательно, его можно перемещать по экрану, менять его размеры. Но окно типа Dialog, как и его суперкласс — окно типа Window, — обязательно имеет родительское окно — владельца owner, который указывается в конструкторе.

Окно типа Dialog может быть модальным (modal), в котором надо обязательно выполнить все предписанные действия, иначе из окна нельзя будет выйти. Модальное окно блокирует родительское окно и, возможно, еще несколько окон, образующих область блокировки (scope of blocking). Заблокированные окна не могут получить фокус ввода и находятся на экране позади модального окна.

Есть четыре области блокировки, определяемые типом модальности (modality type). Тип модальности задается следующими константами вложенного перечисления

Dialog.ModalityType:

□ modeless — отсутствие блокировки;

□ document_modal — блокируются родительские окна, образующие один документ, причем под документом здесь понимаются все окна с общим предком (document root);

□ appli cat I on_modal — блокируются родительские окна, относящиеся к одному приложению;

□ toolkit_modal — блокируются родительские окна, относящиеся к одному экземпляру класса Toolkit.

Более подробное и точное описание типов модальности приведено в документе The AWT Modality, хранящемся в файле docs/api/java/awt/doc-files/Modality.html.

В классе Dialog определена константа default_modality_type, равная application_modal в Java SE 6. Она неявно применяется в конструкторах класса и методе setModal(true).

Графическая система, в которой открыто окно, может не отрабатывать все типы модальности, поэтому в класс Toolkit введен логический метод

isModalityTypeSupported(Dialog.ModalityType modalityType), которым можно проверить тот или иной тип modalityType.

Отдельные окна можно исключить из области блокировки. Для этого в класс Window введен метод setModalExclusionType(Dialog.ModalExclusionType excType), аргументом которого служат константы из перечисления Dialog.ModalExclusionType:

□ no_exclude — отсутствие исключения;

□ application_exclude — модальные окна, имеющие тип модальности application_modal, не могут блокировать это родительское окно;

□ toolkit_exclude — модальные окна, имеющие тип модальности toolkit_modal, не могут блокировать это родительское окно.

Опять-таки графическая система, в которой открыто окно, может не отрабатывать все эти исключения, поэтому в класс Toolkit введен еще один логический метод —

isModalExclusionTypeSupported(Dialog.ModalExclusionType excType).

В классе Dialog более десяти конструкторов. Из них:

□ Dialog(Dialog owner) — создает немодальное диалоговое окно типа MODELESS с пустой строкой заголовка;

□ Dialog (Dialog owner, String title) - создает немодальное диалоговое окно типа

modeless со строкой заголовка title;

□ Dialog(Dialog owner, String title, boolean modal) — создает диалоговое окно, которое будет модальным типа default_modality_type, если параметр modal == true;

□ Dialog(Dialog owner, String title, boolean modal, GraphicConfiguration gc) — создает

диалоговое окно с конфигурацией, определяемой параметром gc.

Пять конструкторов аналогичны предыдущим, но создают диалоговые окна, принадлежащие окну типа Frame:

Dialog(Frame owner);

Dialog(Frame owner, String title);

Dialog(Frame owner, boolean modal);

Dialog(Frame owner, String title, boolean modal);

Dialog(Frame owner, String title, boolean modal, GraphicsConfiguration gc);

Еще у пяти конструкторов, аналогичных предыдущим, первый параметр — типа Window, а не Frame.

Среди методов класса Dialog интересны методы, связанные с модальностью: метод

Dialog.ModalityType getModalityType();

возвращает установленный для окна тип модальности, а метод

setModalityType(Dialog.ModalityType type);

Перейти на страницу:

Все книги серии В подлиннике

Java 7
Java 7

Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др. Дано подробное изложение последней версии сервлетов, технологии JSP и библиотек тегов JSTL. Около двухсот законченных программ иллюстрируют рассмотренные приемы программирования. Приведена подробная справочная информация о классах и методах Core Java API.

Ильдар Шаукатович Хабибуллин

Программирование, программы, базы данных

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных