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

Контейнер Window — это пустое окно, без внутренних элементов: рамки, строки заголовка, строки меню, линеек прокрутки. Это просто прямоугольная область на экране. Окно типа Window самостоятельно, оно не содержится ни в каком контейнере, его не надо заносить в контейнер методом add (). Однако оно не связано с оконным менеджером графической системы. Следовательно, нельзя изменить его размеры, переместить в другое место экрана. Поэтому оно может быть создано только каким-нибудь уже существующим окном, владельцем (owner) или родителем (parent) окна Window. Когда окновладелец убирается с экрана, вместе с ним убирается и порожденное окно. Владелец окна указывается в конструкторе:

□ Window (Frame f) — создает окно, владелец которого — фрейм f;

□ Window (Window owner) — создает окно, владелец которого — уже имеющееся окно или подкласс класса Window.

Созданное конструктором окно не выводится на экран автоматически. Его следует отобразить методом setVisible(true). Убрать окно с экрана можно методом setVisible (false), а проверить, видно ли окно на экране, — логическим методом

isShowing().

Методами

setIconImage(Image icon);

setIconImages(List icons);

можно задать один или несколько ярлыков для окна, а посмотреть их можно методом

List getIconImages();

Окно типа Window возможно использовать для создания всплывающих окон предупреждения, сообщения, подсказки. Для создания диалоговых окон есть подкласс Dialog, всплывающих меню — класс PopupMenu.

Видимое на экране окно выводится на передний план методом toFront () или, наоборот, помещается на задний план методом toBack ( ). Методом setAlwaysOnTop (true) можно дать указание графическому менеджеру всегда держать окно на переднем плане. Не все графические менеджеры могут выполнить это указание, поэтому такую возможность следует предварительно проверить логическим методом isAlwaysOnTopSupported (). Выполнение этого указания можно проверить логическим методом isAlwaysOnTop ( ).

Уничтожить окно, освободив занимаемые им ресурсы, можно методом dispose (). Менеджер размещения компонентов в окне по умолчанию — BorderLayout.

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

getToolkit() .

События

Кроме событий класса Component — ComponentEvent, FocusEvent, KeyEvent, MouseEvent — при изменении размеров окна, его перемещении или удалении с экрана, а также показе на экране происходит событие WindowEvent.

Контейнер Frame

Контейнер Frame — это полноценное готовое окно со строкой заголовка, в которую помещены кнопки контекстного меню, сворачивания окна в ярлык и разворачивания во весь экран и кнопка закрытия приложения. Заголовок окна записывается в конструкторе или методом setTitle(String title). Окно окружено рамкой. В него можно установить строку меню методом setMenuBar (MenuBar mb). Это мы обсудим в конце данной главы.

На кнопке контекстного меню в левой части строки заголовка изображена дымящаяся чашечка кофе — логотип Java. Вы можете установить там другое изображение методом setIconImage(Image icon), создав предварительно изображение icon в виде объекта класса Image. Как это сделать, объясняется в главе 20.

Все элементы окна Frame вычерчиваются графической оболочкой операционной системы по правилам этой оболочки. Окно Frame автоматически регистрируется в оконном менеджере графической оболочки и может перемещаться, менять размеры, сворачиваться в панель задач (task bar) с помощью мыши или клавиатуры, как "родное" окно операционной системы.

Создать окно типа Frame можно следующими конструкторами:

□ Frame () — создает окно с пустой строкой заголовка;

□ Frame(String title) — записывает аргумент title в строку заголовка;

□ Frame(GraphicsConfiguration gc) -определяет конфигурацию окна параметром gc.

□ Frame(String title, GraphicsConfiguration gc) — определяет строку заголовка title и конфигурацию окна параметром gc.

Методы класса Frame осуществляют доступ к элементам окна, но не забывайте о том, что класс Frame наследует около двухсот методов классов Component, Container и Window. В частности, наследуется менеджер размещения по умолчанию-BorderLayout.

События

Кроме событий класса Component — ComponentEvent, FocusEvent, KeyEvent, MouseEvent — при изменении размеров окна, его перемещении или удалении с экрана, а также показе на экране происходит событие WindowEvent.

Программа листинга 10.5 создает два окна типа Frame, в которые помещаются строки — метки Label. При закрытии основного окна щелчком по соответствующей кнопке в строке заголовка или комбинацией клавиш + выполнение программы завершается обращением к методу System.exit(0), и закрываются оба окна. При закрытии второго окна происходит обращение к методу dispose (), и закрывается только это окно.

Листинг 10.5. Создание двух окон

import java.awt.*; import java.awt.event.*;

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

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

Java 7
Java 7

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

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

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

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

C# 4.0: полное руководство
C# 4.0: полное руководство

В этом полном руководстве по C# 4.0 - языку программирования, разработанному специально для среды .NET, - детально рассмотрены все основные средства языка: типы данных, операторы, управляющие операторы, классы, интерфейсы, методы, делегаты, индексаторы, события, указатели, обобщения, коллекции, основные библиотеки классов, средства многопоточного программирования и директивы препроцессора. Подробно описаны новые возможности C#, в том числе PLINQ, библиотека TPL, динамический тип данных, а также именованные и необязательные аргументы. Это справочное пособие снабжено массой полезных советов авторитетного автора и сотнями примеров программ с комментариями, благодаря которым они становятся понятными любому читателю независимо от уровня его подготовки. Книга рассчитана на широкий круг читателей, интересующихся программированием на C#.Введите сюда краткую аннотацию

Герберт Шилдт

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