
- •Программирование на Java
- •Глава 1 Введение в java. Основы языка.
- •Тема 1.1 Язык программирования java.
- •Тема 1.2 Состав пакета Java2.
- •Тема 1.3 Настройка среды окружения.
- •Тема 1.4 Структура Java-программы.
- •Тема 1.5 Набор текста, запуск и компиляция простейшей программы.
- •Тема 1.6 Подробное рассмотрение кода простейшей программы.
- •Тема 1.7. Создание программы в разных средах разработки.
- •Тема 1.8 Лексические основы языка
- •Тема 1.9 Элементарные типы данных.
- •Тема 1.10 Преобразование типов.
- •Арифметические операции
- •Операции сравнения
- •Тема 1.11 Кoнсольный ввод с помощью класса java.Util.Scanner
- •Тема 1.12 Классы-оболочки
- •Тема 1.13 Автоупакока и автораспаковка.
- •Тема 1.14 Операторы
- •1.14.1 Блок
- •1.14.2 Условный оператор if
- •1.14.4 Оператор цикла while
- •1.14.5 Оператор цикла do-while
- •1.14.6 Оператор цикла for
- •1.14.7 Оператор continue и метки
- •1.14.8 Оператор break
- •1.14.9 Оператор варианта switch
- •Тема 1.15 Статический импорт
- •Тема 1.16 Класс Math
- •Задания
- •Тема 1.17 Псевдослучайные числа
- •Тема 1.18 Генерация случайных чисел
- •Тема 1.19 Массивы в Java
- •1.19.1 Объявление и заполнение массива
- •1.19.2 Сортировка массива
- •Сортировка выбором
- •Сортировка методом пузырька
- •1.19.3 Многомерные массивы
- •Задания
- •1.19.4 Нерегулярные массивы
- •Глава 2 классы
- •Тема 2.1 Основы классов
- •Тема 2.2 Общая форма класса
- •Тема 2.3 Объявление объектов
- •Тема 2.4 Более подробное рассмотрение операции new
- •Тема 2.5 Присваивание переменных объектных ссылок
- •Тема 2.6 Знакомство с методами
- •Тема 2.7 Возвращение значения из метода
- •Тема 2.8 Добавление метода, принимающего параметры
- •Тема 2.9 Конструкторы
- •Тема 2.10 Сборка мусора
- •Тема 2.11 Перегрузка методов
- •Тема 2.12 Перегрузка конструкторов
- •Тема 2.13 Использование объектов в качестве параметров
- •Тема 2.14 Более пристальный взгляд на передачу аргументов
- •Тема 2.16 Рекурсия
- •Тема 2.17 Введение в управление доступом
- •Тема 2.18 Ключевое слово static
- •Тема 2.19 Ключевое слово final
- •Тема 2.20 Аргументы переменной длины
- •Тема 2.21 Строки и числа
- •Тема 2.22 Нумерованные типы
- •Глава 3 наследование и интерфейсы
- •Тема 3.1 Основы наследования
- •Тема 3.2 Наследование и доступ к членам класса
- •Тема 3.3 Конструкторы и наследование
- •Тема 3.4 Использование ключевого слова super для вызова конструктора суперкласса
- •Тема 3.5 Использование ключевого слова super для доступа к членам суперкласса
- •Тема 3.6 Многоуровневая иерархия
- •Тема 3.7 Когда вызываются конструкторы
- •Тема 3.8 Объекты подклассов и ссылки на суперклассы
- •Тема 3.9 Переопределение методов
- •Тема 3.10 Переопределение методов и поддержка полиморфизма
- •Тема 3.11 Использование абстрактных классов
- •Тема 3.12 Использование ключевого слова final
- •Тема 3.13 Предотвращение переопределения методов
- •Тема 3.14 Предотвращение наследования
- •Тема 3.15 Класс Object
- •Тема 3.16 Интерфейсы
- •3.16.1 Объявление интерфейса.
- •3.16.2 Реализация интерфейсов
- •3.16.3 Использование ссылок на интерфейсы
- •3.16.4 Переменные в составе интерфейсов
- •3.16.5 Наследование интерфейсов
- •Тема 3.17 Пакеты и ограничение доступа
- •Тема 3.18 Внутренние классы
- •3.18.1 Внутренние (inner) классы
- •3.18.2 Вложенные (nested) классы
- •3.18.3 Анонимные (anonymous) классы
- •Глава 4 Обработка исключительных ситуаций
- •Тема 4.1 Исключения в Java
- •Тема 4.2 Типы исключений
- •Тема 4.3 Неперехваченные исключения
- •Тема 4.4 Ключевые слова try и catch
- •Тема 4.6 Ключевое слово throw
- •Тема 4.7 Ключевое слово throws
- •Тема 4.8 Ключевое слово finally
- •Ошибка при выполнении метода1 java.Lang.ArithmeticException: Demo
- •Тема 4.9 Потомки Exception или написание своих классов ошибок
- •Глава 5 Универсальные типы. КоллекциИ
- •Тема 5.1 Общие сведения об универсальных типах
- •Тема 5.2 Универсальный класс с двумя параметрами типа
- •Тема 5.3 Ограниченные типы
- •Тема 5.4 Использование групповых параметров
- •Тема 5.5 Универсальные методы
- •Тема 5.6 Универсальные интерфейсы
- •Тема 5.7 Ошибки неоднозначности
- •Тема 5.8 Ограничения универсальных типов
- •Тема 5.9 Краткий обзор коллекций
- •5.9.1 Класс ArrayList
- •5.9.2 Класс LinkedList
- •5.9.3 Класс HashSet
- •5.9.4 Класс TreeSet
- •5.9.5 Доступ к коллекции через итератор
- •5.9.6 Алгоритмы коллекций
- •Глава 6 jdbc (Java DataBase Connectivity) Тема 6.1 Драйверы, соединения и запросы
- •Тема 6.2 Простое соединение и простой запрос
- •Тема 6.2 Класс ResultSet
- •Тема 6.3 Метаданные
- •Тема 6.4 Подготовленные запросы
- •Глава 7 Swing и пользовательский интерфейс
- •Тема 7.1 Общие сведения о swing
- •Тема 7.2 Архитектура mvc
- •Тема 7.3 Контейнер и компоненты
- •Тема 7.4 Простая программа, использующая средства Swing
- •Тема 7.5 Поддержка событий
- •Тема 7.6 Использование кнопок и обработка событий
- •Тема 7.7 Краткие сведения о диспетчерах компоновки
- •Тема 7.8 Пример использования jdbc и swing вместе
Глава 7 Swing и пользовательский интерфейс
Тема 7.1 Общие сведения о swing
Практически каждое приложение можно разделить на две части. Первая это код, выполняющий те действия, для которых и была написана программа, например копирование файла, формирование запроса к базе данных, оформление заказа или финансовые вычисления. Вторая часть – это интерфейс, который определяет порядок взаимодействия пользователя с программой. Действия, выполняемые приложением, безусловно важны. Но нельзя недооценивать также значение пользовательского интерфейса, который не только задает внешний вид программы, но часто также определяет, насколько успешным будет данный продукт на рынке. Таким образом, создание привлекательных, согласованных и эффективных пользовательских интерфейсов –неотъемлемая часть процесса разработки программ. Для программистов, применяющих язык Java, путь к созданию высококачественных интерфейсов –это использование Swing.
Swing представляет собой набор классов, применяемых для создания графических пользовательских интерфейсов (Graphical User Interface – GUI) современных приложений, в том числе Web-программ. Swing предоставляет богатый набор визуальных компонентов, например, кнопок, полей редактирования, полос прокрутки, флажков опций и таблиц, разработанных так, чтобы их можно было успешно применять в самых различных приложениях. Посредством Swing можно разработать интерфейс приложения на профессиональном уровне, наилучшим образом удовлетворяющий потребностям пользователей. Более того, трудно представить профессионального программиста, не владеющего Swing.
В ранних версиях Java средства Swing еще отсутствовали. Можно считать, что они стали попыткой преодолеть трудности, связанные с использованием первой оконной подсистемы AWT (Abstract Window Toolkit). В AWT был определен базовый набор управляющих элементов и окон, позволяющий создавать графические интерфейсы, правда, с ограниченными возможностями. Одним из ограничений AWT была платформенно-ориентированная поддержка визуальных компонентов. В результате внешний вид интерфейсных элементов определялся не средствами Java, а используемой платформой. Элементы, создаваемые средствам AWT, назывались тяжеловесными.
Платформенно-ориентированная поддержка интерфейсных элементов стала источником ряда проблем. Во-первых, из-за различия в операционных системах компоненты по-разному выглядели и даже по-разному вели себя на различных платформах. Это было прямым нарушением главного принципа Java: код, единожды написанный, должен работать везде. Во-вторых, внешний вид каждого компонента был фиксированным, и изменить его было достаточно трудно (причина та же – платформенно-ориентированные средства поддержки). В-третьих, использование тяжеловесных компонентов порождало ряд проблем, например, такие компоненты всегда имели прямоугольную форму и были непрозрачны.
Потребовалось не слишком много времени, чтобы осознать, что ограничения AWT слишком серьезны и нужен новый подход. В результате в 1997 г. появился набор Swing. Он был включен в состав JFS (Java Foundation Classes). JFC – это набор классов, обеспечивающих базовую поддержку корпоративных приложений с пользовательским интерфейсом. Другими компонентами JFC являются AWT (AbstractWindow Toolkit), Java 2D, Drag и Drop и Accessibility API. Первоначально Swing использовался в Java 1.1 как отдельная библиотека. Однако в Java 1.2 средства Swing(как и остальные элементы JFS) были полностью интегрированы в Java. В настоящее время Swing – неотъемлемая часть данного языка.
Как уже было сказано, набор Swing был создан для того, чтобы преодолеть ограничения, связанные с AWT. Для достижения этой цели разработчики реализовали два подхода: легковесные компоненты и настраиваемые стили. Совместно эти решения позволили создать элегантный и простой в использовании инструмент, свободный от недостатков AWT. Легковесные компоненты и настраиваемые стили считаются основными свойствами Swing.
Все компоненты Swing, за небольшим исключением, являются легковесными. Это означает, что они написаны полностью на Java и не зависят от средств той платформы, на которой выполняется программа. Поскольку при воспроизведении легковесных компонентов используются графические примитивы, они могут иметь форму, отличную от прямоугольной. Следовательно, такие компоненты являются более эффективными и гибкими. Поскольку легковесные компоненты не преобразуются в платформенно-ориентированные элементы, их внешний вид определяет Swing, а не операционная система. Следовательно, интерфейсные элементы, созданные с помощью Swing, выглядят одинаково на разных платформах.
Swing поддерживает настраиваемые стили. Поскольку каждый компонент воспроизводится с помощью Java-кода, его внешний вид полностью контролируется средствами Swing. Это означает, что внешний вид компонента можно отделить от логики его работы; эта возможность реализована в Swing. Такое разделение позволяет изменить внешний вид компонента, не затрагивая других его характеристик. Другими словами, появляется возможность перенастроить внешний вид, Не создавая побочных эффектов в коде, использующем компонент. Более того, можно также создавать глобальные стили, определяющие, как будет выглядеть интерфейс в целом. При переключении стиля внешний вид всех элементов изменяется автоматически.
Настраиваемые стили создают ряд преимуществ. Становится возможным обеспечить один и тот же внешний вид окна программы на разных платформах. С другой стороны, можно также настроить программу таким образом, что ее интерфейс будет соответствовать той или иной конкретной платформе. Например, если вы знаете, что ваша программа будет выполняться только в среде Windows, вы можете задать для нее внешний вид, соответствующий остальным программам, работающим в данной системе. Можно также сформировать свой стиль, отличающийся от стилей известных платформ. И наконец, есть возможность динамически изменять внешний вид программы в процессе ее работы.
Каждому пользователю Swing изначально доступны разные стили, например: metal, Windows и др. Стиль metal также называют стилем Java. Это платформенно-независимый стиль, доступный во всех средах выполнения Java-программ. Он принимается по умолчанию. Существует также стиль Mac, доступный в системе Mac, и стиль GTK+, который можно использовать на платформах Mac и Solaris. В данной книге используется стиль Java. Такой выбор сделан потому, что данный стиль доступен на всех платформах. Однако никто не мешает вам при желании экспериментировать с другими стилями и даже создавать свои.
Перед тем как продолжить наш разговор, необходимо отметить одну очень важную деталь. Несмотря на то что Swing устраняет ряд ограничений, присущих AWT, он не заменяет данный инструмент. Более того, в основу Swing положены некоторые основные решения, принятые в AWT. В частности, в Swing используется такой же механизм обработки событий, как и в AWT. Поэтому желательно понимать структуру библиотеки AWT и ее возможности. Этим вы упростите для себя восприятие Swing.