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

Связь с приложениями пользователя устанавливается через операционную систему, поэтому экземпляр класса Desktop создается не конструктором, а статическим методом getDesktop (). Эту связь удается установить не во всех системах, поэтому предварительно следует сделать проверку статическим логическим методом isDesktopSupported(). Итак, создание экземпляра класса Desktop выглядит так:

Desktop d = null; if (Desktop.isDesktopSupported()) d = Desktop.getDesktop();

Вызвать каждое из перечисленных ранее приложений тоже удается не всегда, поэтому перед обращением к какому-либо методу класса Desktop имеет смысл сделать проверку логическим методом

public boolean isSupported(Desktop.Action action);

Аргументом этого метода может служить одна из следующих констант вложенного перечисления Action:

□ browse — у пользователя есть браузер по умолчанию;

□ MAIL — у пользователя есть почтовый клиент по умолчанию;

□ EDIT — можно открыть текстовый редактор, связанный с файлами;

□ OPEN — можно открыть файл;

□ PRINT — можно напечатать файл.

С учетом этой проверки, обращение к методам класса Desktop будет выглядеть так:

if (d.isSupported(Desktop.Action.BROWSE))

d.browse(new URI("http://www.bhv.ru"));

if (d.isSupported(Desktop.Action.MAIL)) d.mail();

if (d.isSupported(Desktop.Action.EDIT))

d.edit(new File("/home/user/j ava/src/MyDesktop.j ava");

if (d.isSupported(Desktop.Action.OPEN))

d.open(new File("/home/user/j ava/src/MyDesktop.j ava");

if (d.isSupported(Desktop.Action.PRINT))

d.print new File("/home/user/java/src/MyDesktop.java");

System Tray

Графическое приложение Java может установить ярлык в зоне уведомлений (notification area), называемой также системным лотком (system tray) или просто треем. Эта зона обычно размещается в правом нижнем углу экрана и содержит часы и ярлыки запущенных программ. Для работы с зоной уведомлений в пакет java.awt включен класс SystemTray. Его метод add(Trayicon icon) помещает ярлык icon в зону уведомлений, а метод remove (Trayicon icon) удаляет его из зоны. Каждое приложение может поместить в зону уведомлений несколько ярлыков.

Как видно из заголовков, параметр этих методов, ярлык- это объект класса TrayIcon.

Он создается конструктором класса. Объект активен — он может реагировать на события, такие как действия мыши, открывая, например, всплывающее меню после щелчка на ярлыке правой кнопкой мыши или меняя изображение при наведении на него курсора мыши. Обработка таких событий описана в главе 15.

Как и при действиях с приложениями пользователя, не каждая система позволяет управлять зоной уведомлений. Поэтому работа с этой зоной связана с проверками и выглядит следующим образом:

TrayIcon icon = null; if (SystemTray.isSupported()){

SystemTray tray = SystemTray.getSystemTray();

Image im = Toolkit.getDefaultToolkit.getImage("myicon.gif"); icon = new TrayIcon(im); tray.add(icon);

}

Более подробно работа с зоной уведомлений показана в документации к классу SystemTray. Она будет понятна после прочтения главы 15.

Splash Screen

Очень часто при загрузке приложения на экране вначале появляется небольшое окнозаставка (splash screen) с каким-нибудь изображением, сменяемое затем главным окном приложения. Такое окно можно открыть при запуске приложения из командной строки, указав ключ -splash. Например, если файл с изображением называется name.gif, то запустить приложение можно так:

java -splash:name.gif SimpleFrame

При запуске приложения из архива, например

java -jar SimpleFrame.jar

имя файла с изображением записывается в файл MANIFEST.MF, как показано в главе 25.

Некоторые возможности управления окном-заставкой предоставляет класс SplashScreen из пакета java.awt. Это возможность менять изображение методом setImageURL(URL image) и возможность рисовать в окне, получив ссылку на объект класса Graphics2D методом createGraphics (). После заполнения окна-заставки оно выводится на экран методом update (). Все это делается по следующей схеме:

SplashScreen splash = SplashScreen.getSplashScreen(); if (splash != null){

Graphics2D g = splash.createGraphics();

g.setPaintMode();

g.drawString("Loading...", 100, 200);

// и т. д., рисуем, как написано в главе 9. g.update();

}

Заключение

Как видите, библиотека графических классов AWT очень велика и детально проработана. Это многообразие классов только отражает многообразие задач построения графического интерфейса. Стремление улучшить интерфейс безгранично.

Оно приводит к созданию все новых библиотек классов и расширению существующих. Независимыми производителями создано уже много графических библиотек Java: KL Group, JBCL, SWAT, SWT и появляются все новые и новые библиотеки. Сведения о них можно получить на сайтах, указанных во введении.

В следующих главах мы подробно рассмотрим, как можно использовать библиотеки AWT и Swing для создания собственных приложений с графическим интерфейсом пользователя, изображениями, анимацией и звуком.

Вопросы для самопроверки

1. Что такое графический интерфейс пользователя?

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

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

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#.Введите сюда краткую аннотацию

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

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