Использование библиотек классов SWING и MFC для разработки графического интерфейса пользователя
Покупка
Автор:
Винокуров Игорь Викторович
Год издания: 2011
Кол-во страниц: 396
Дополнительно
Вид издания:
Учебное пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-7038-3560-9
Артикул: 806659.01.99
Данное учебное пособие разработано на основе лекционного материала дисциплины по выбору «Современные языки программирования высокого уровня», читаемого автором на кафедре «Компьютерные системы и сети» Калужского филиала МГТУ им. Н. Э. Баумана для студентов 4-го курса специальности 230 101.65 «Вычислительные машины, комплексы, системы и сети».
Пособие предназначено студентам, аспирантам и преподавателям высших учебных заведений, а также всем тем, кто самостоятельно изучает использование библиотек классов Swing и MFC для разработки графического интерфейса пользователя на языках программирования высокого уровня Java и Visual C++.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Московский государственный технический университет имени Н. Э. Баумана Калужский филиал И. В. Винокуров ИСПОЛЬЗОВАНИЕ БИБЛИОТЕК КЛАССОВ SWING И MFC ДЛЯ РАЗРАБОТКИ ГРАФИЧЕСКОГО ИНТЕРФЕЙСА ПОЛЬЗОВАТЕЛЯ Учебное пособие Издание второе, стереотипное Допущено УМО вузов по университетскому политехническому образованию в качестве учебного пособия для студентов высших учебных заведений, обучающихся по направлению подготовки 230 100 «Информатика и вычислительная техника»
УДК 681.3.06 ББК 32.973-01 В49 Рецензенты: д-р техн. наук Ю. П. Корнюшин; канд. техн. наук М. О. Корлякова Научный редактор: д-р техн. наук Л. Г. Комарцова Утверждено методической комиссией КФ МГТУ им. Н. Э. Баумана (протокол № 3 от 11.03.08) Винокуров И. В. В49 Использование библиотек классов Swing и MFC для разработки графического интерфейса пользователя : учебное пособие / Издание второе, стереотипное. — М. : Издательство МГТУ им. Н. Э. Баумана, 2011. — 396 с. ISBN 978-5-7038-3560-9 Данное учебное пособие разработано на основе лекционного материала дисциплины по выбору «Современные языки программирования высокого уровня», читаемого автором на кафедре «Компьютерные системы и сети» Калужского филиала МГТУ им. Н. Э. Баумана для студентов 4-го курса специальности 230 101.65 «Вычислительные машины, комплексы, системы и сети». Пособие предназначено студентам, аспирантам и преподавателям высших учебных заведений, а также всем тем, кто самостоятельно изучает использование библиотек классов Swing и MFC для разработки графического интерфейса пользователя на языках программирования высокого уровня Java и Visual C++. УДК 681.3.06 ББК 32.973-01 © Винокуров И. В., 2011 © Издательство МГТУ ISBN 978-5-7038-3560-9 им. Н. Э. Баумана, 2011
ВСТУПЛЕНИЕ В данном учебном пособии рассмотрены особенности функционирования и использования основных управляющих элементов библиотек классов Swing и MFC, предназначенных для разработки графического интерфейса пользователя на языках Java и Visual C++. Учебное пособие состоит из двух частей. Первая часть посвящена использованию библиотеки классов Swing для разработки оконных приложений на языке Java. Описывается работа с реализованными в Swing контейнерными элементами и их менеджерами компоновки, а также функциональность основных управляющих элементов Swing. Приведены особенности их взаимодействия, в том числе и с использованием технологии Drag and Drop. Рассматриваются особенности использования фреймовых окон, стандартных и пользовательских диалогов. Кроме того, изложены основные этапы разработки графического интерфейса пользователя в интегрированной среде разработки Java-приложений IntelliJIDEA версии 5.02. Вторая часть учебного пособия посвящена использованию библиотеки классов MFC для разработки оконных приложений на языке Visual C++. В этой части описываются основные этапы создания приложений Microsoft® Windows® на основе диалоговых окон, а также базовая функциональность основных управляющих элементов библиотеки классов MFC. Отмечаются особенности взаимодействия с ними. Рассматривается использование основных стандартных диалоговых окон MFC. Подробно изложены основные этапы создания SDI- и MDI-приложений с архитектурой «документ–отображение». Акцентируется внимание на наиболее значимых этапах использования интегрированной среды Microsoft® Visual Studio® 2005 для разработки графического интерфейса пользователя с использованием библиотеки классов MFC. Кроме того, в данном учебном пособии рассмотрены основные аспекты работы с базами данных, реализованные в библиотеках классов Swing и MFC.
Учебное пособие ориентировано на читателя, достаточно хорошо владеющего языками программирования Java и Visual C++ и имеющего представление об особенностях разработки оконных приложений для современных операционных систем. В связи с тем что данное учебное пособие содержит достаточно большое число примеров приложений и описания наиболее часто используемых свойств и методов классов Swing и MFC, оно может рассматриваться и как краткое справочное руководство по этим библиотекам.
ЧАСТЬ I ИСПОЛЬЗОВАНИЕ БИБЛИОТЕКИ КЛАССОВ SWING ДЛЯ РАЗРАБОТКИ ГРАФИЧЕСКОГО ИНТЕРФЕЙСА ПОЛЬЗОВАТЕЛЯ
ВВЕДЕНИЕ Приложения, написанные на кроссплатформенном языке программирования Java, способны работать практических во всех современных операционных системах. В JDK 1.0 независимость оконных приложений от графической среды той или иной операционной системы была реализована за счет так называемых парных интерфейсов, реализующих обращения к визуальным компонентам последней. Библиотека классов, основанная на таких интерфейсах, была разработана Sun Microsystems® и получила название AWT (от англ. Abstract Window Toolkit — совокупность средств для работы с абстрактными окнами). Все визуальные компоненты AWT имеют вид, свойственный для той или иной графической среды, поскольку их использование приводит к созданию парных им компонентов, которые и отображаются на экране. В JDK 1.1 совместными усилиями Sun Microsystems® и Netscape® была разработана библиотека Swing, все компоненты которой полностью написаны на языке Java и уже не зависят от парных интерфейсов к графической среде операционной системы. Визуальные компоненты Swing во всех графических средах выглядят одинаково, однако в этой библиотеке реализована и возможность изменения их внешнего вида, свойственного для той или иной операционной системы. Начиная с JDK 1.2 (официальное время выпуска — декабрь 1998 г.), Swing стала являться частью библиотеки JFC (от англ. Java Foundation Classes — базовые классы Java). Последовательность создания оконных Java-приложений с использованием библиотеки классов Swing заключается в последовательной реализации следующих основных этапов: ♦ создание фреймового окна; ♦ ассоциирование с фреймовым окном контейнерного элемента, использующего тот или иной менеджер компоновки; ♦ расположение на контейнерном элементе всех необходимых управляющих элементов; ♦ добавление к управляющим элементам слушателей событий, на которые они должны реагировать; ♦ создание обработчиков для всех прослушиваемых событий.
ГЛАВА 1. ФРЕЙМОВОЕ ОКНО По своей внутренней организации фреймовое окно (или просто фрейм) является практически одним из самых сложных Swingкомпонентов, поскольку именно оно реализует связь между кроссплатформенными Java-приложениями и реальной операционной системой. JVM (от англ. Java Virtual Machine — виртуальная машина Java) регистрирует его в графической среде последней, вследствие чего фреймовое окно приобретает свойства минимизации и максимизации, изменения размера, перемещения и т.д. Фреймовое окно реализовано в классе JFrame (пакет javax.swing.JFrame) и имеет следующие конструкторы: JFrame (), JFrame (String title). Первый конструктор используется для создания фреймового окна без заголовка, второй — для создания фреймового окна с заголовком title. В табл. 1 приведены основные методы фреймового окна. Таблица 1 Основные методы класса JFrame Метод класса JFrame Назначение метода 1 2 void setTitle (String title) Устанавливает заголовок фреймового окна в title String getTitle () Возвращает заголовок фреймового окна void setVisible (boolean visible) Устанавливает видимость или невидимость фреймового окна. Если значение аргумента visible равно true, то фреймовое окно отображается (является видимым) на экране, а если false, то окно не отображается boolean isVisible () Возвращает состояние видимости или невидимости фреймового окна — true или false соответственно void setLocation (int x, int y) Устанавливает координаты левого верхнего угла фрейма (x, y) в содержащем его окне void setSize (int width, int height) Устанавливает горизонтальный и вертикальный размеры фреймового окна в пикселях — аргументы width и height соответственно
Окончание табл. 1 1 2 void validateTree () Обновляет (перерисовывает) фреймовое окно void setResizable (boolean resizable) Устанавливает или отменяет возможность изменения размера фреймового окна. Если значение аргумента resizable равно true, то раз- мер окна может быть изменен, а если false, то размер окна не может быть изменен void setContentPane (Container container) Устанавливает container панелью контента фреймового окна (см. гл. 2) Container getContentPane () Возвращает панель контента фреймового окна void setRootPane (Container container) Устанавливает панель container корневой панелью фреймового окна (см. гл. 2) Container getRootPane () Возвращает корневую панель фреймового окна void setGlassPane (Container container) Устанавливает панель container прозрачной панелью фреймового окна (см. гл. 2) Container getGlassPane () Возвращает прозрачную панель фреймового окна void setLayeredPane (Container container) Устанавливает панель container слоистой панелью фреймового окна (см. гл. 2) Container getLayeredPane () Возвращает слоистую панель фреймового окна void pack () Устанавливает размеры фреймового окна исходя из размеров по умолчанию всех его дочерних элементов (см. гл. 4) void setDefaultClose- Operation (int operation) Определяет операцию, выполняемую при нажатии на системную кнопку закрытия фреймового окна. Значениями аргумента operation должны быть следующие предопре- деленные константы: HIDE_ON_CLOSE — сделать фреймовое окно невидимым (значение по умолчанию); DISPOSE_ON_CLOSE — закрыть фреймовое окно; EXIT_ON_CLOSE — закрыть приложение void setIconImage (Icon icon) Устанавливает иконку фреймового окна в icon void setDefaultLookAnd- FeelDecorated (boolean decorated) Включает или отключает оформление (декорирование) внешнего вида фреймового окна, характерного для той или иной операционной системы Ниже приводится фрагмент приложения, реализующего создание простого и декорированного фреймовых окон. Их внешний вид приведен на рис. 1, 2 соответственно.
class MainClass extends JFrame { public MainClass () { super(); } public static void main(String[] args) { // Декорирование фреймового окна JFrame.setDefaultLookAndFeelDecorated(true); MainClass mc = new MainClass(); mc.setVisible(true); mc.setSize(200, 100); mc.setTitle(“Фреймовое окно”); mc.setDefaultCloseOperation(EXIT_ON_CLOSE); mc.validateTree(); } } Рис. 1. Внешний вид фреймового окна в Swing с отключенным декорированием Рис. 2. Внешний вид фреймового окна в Swing с включенным декорированием
ГЛАВА 2. КОНТЕЙНЕРНЫЕ ЭЛЕМЕНТЫ Контейнерные элементы (или просто контейнеры) предназначены для размещения на них различных управляющих элементов фреймовых окон — кнопок, полей редактирования, переключателей и т.д., в том числе и других контейнеров. Фреймовое окно имеет несколько основных контейнеров, определяющих его внешний вид и особенности функционирования; их взаимосвязь приведена на рис. 3. Рис. 3. Взаимосвязь основных контейнерных элементов фреймового окна Базовым контейнером фреймового окна является корневая панель. Эта панель реализована в классе JRootPane, экземпляр которого может быть возвращен методом фреймового окна getRootPane(). Корневая панель фреймового окна содержит прозрачный компонент glassPane и слоистый контейнерный элемент. Компонент glassPane располагается поверх всех остальных контейнерных элементов фреймового окна. По умолчанию этот компонент не отображается. Экземпляр прозрачного компонента фреймового окна может быть возвращен или установлен методами getGlassPane() и setGlassPane (Component glassPane) соответственно. Пример использования прозрачного компонента фреймового окна приведен ниже. Внешний вид фреймового окна с прозрачным компонентом показан на рис. 4. class MyGlassPane extends JComponent { public void paint(Graphics g) { g.drawString(“Текст на glassPane”, 20, 20);