
- •Программирование на 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.3 Контейнер и компоненты
В состав графического пользовательского интерфейса, созданного средствами Swing, входят элементы двух типов: компоненты и контейнеры. Такое разделение во многом условно, так как контейнеры являются в то же время и компонентами. Различие между ними в их назначении. Компоненты – это независимые элементы, в качестве примеров которых можно привести кнопки или линейные регуляторы. Контейнер может содержать в себе несколько компонентов и представляет собой специальный тип компонента. Чтобы компонент отобразился на экране, его надо поместить в контейнер. Таким образом, в составе графического пользовательского интерфейса должен присутствовать хотя бы один контейнер. Поскольку контейнеры являются компонентами, один контейнер может находиться в составе другого. Это позволяет формировать так называемую иерархию контейнеров, на вершине которой должен находиться контейнер верхнего уровня.
Подавляющее большинство компонентов Swing создается с помощью классов, являющихся потомками класса JComponent. Класс JComponent реализует функциональные модификация данной модели, называемая архитектурой "модель-представитель" или архитектурой с выделенной моделью.
Классы, представляющие все компоненты Swing, содержатся в пакете javax.swing. В таблице 7.1 приведены имена классов для компонентов Swing.
Таблица 7.1 Компоненты Swing
Компонент |
Назначение компонента |
JLabel |
"Метка" – вывод однострочного неформатированного текста |
JButton |
"Кнопка" – кнопка с текстом и/или с картинкой |
JToggleButton |
"Защелкивающаяся кнопка" – кнопка с фиксацией. Может быть одной из нескольких таких кнопок в группе, в этом случае нажатие одной кнопки вызывает отпускание другой. Работа группы обеспечивается компонентом ButtonGroup, который должен быть перетащен на форму, а затем назначен свойству buttonGroup. |
JCheckBox |
"Чекбокс" – пункт выбора с независимой фиксацией. |
JRadioButton |
"Радиокнопка" – пункт выбора с зависимой фиксацией, должен быть одним из нескольких в группе. Работа группы обеспечивается компонентом ButtonGroup. |
ButtonGroup |
Обеспечивает работу групп компонентов JToggleButton или JradioButton. |
JComboBox |
"Комбобокс" – выпадающий список. |
JList |
Прокручивающийся список. |
JTextField |
"Текстовое поле" – однострочный пункт ввода и редактирования текста. |
JTextArea |
"Текстовая область" – многострочный пункт ввода и редактирования текста. |
JPanel |
"Панель" – группирующий компонент, позволяющий располагать на себе другие компоненты. Передвижение панели перемещает вместе с ней все расположенные на ней компоненты. По умолчанию свойство layout ("размещение") установлено как FlowLayout –"в виде потока". Для простых задач вместо этого компонента лучше использовать JLayeredPane. |
JTabbedPane |
"Панель с закладками" –каждый положенный на нее компонент показывается в отдельной закладке. Чтобы разместить на одной закладке несколько компонентов, сначала положите на панель с закладками обычную панель. Для того, чтобы создать последующие закладки, выделите панель с закладками, вызовите правой кнопкой мыши всплывающее меню, пункт Add From Palette ("добавить из палитры"), и добавьте еще одну панель или другой компонент. |
JScrollBar |
Независимая полоса прокрутки. Используется редко – для программно управляемой прокрутки содержимого компонентов, для которых отсутствуют встроенные полосы прокрутки. |
JScrollPane |
"Панель с полосами прокрутки" |
JMenuBar |
"Меню формы" – предназначено для расположения в нем компонентов типа JMenu (заголовков меню). |
JPopupMenu |
"Всплывающее меню" – предназначено для расположения в нем компонентов типа JMenuItem (пунктов меню). |
JSlider |
"Ползунок". Используется для плавной регулировки числовых величин, а также связанных с ними программно регулируемых изменений. |
JProgressBar |
"Прогрессбар" – полоса показа доли выполнения задачи. Показывает уровень, отражающий долю выполнения задачи |
JSplitPane |
"Панель с разделителем" – панель, состоящая из двух частей, между которыми имеется линия разделителя, которую можно перетаскивать мышью, меняя взаимный размер частей. |
JFormattedTextField |
"Поле ввода форматированного текста" |
JPasswordField |
"Поле ввода пароля" – вводимый текст отображается звездочками. |
JSpinner |
"Спиннер" – поле ввода числа с кнопками увеличения/уменьшения. |
JSeparator |
"Сепаратор" – разделительная линия. Используется в декоративных целях для разделения рабочих областей формы и других группирующих компонентов. |
JTextPane |
"Текстовая панель". По умолчанию автоматически переносит текст на новую строку. А не располагает в одну строку с показом горизонтального скроллера, как это делает JTextArea. |
JEditorPane |
"Панель текстового редактора" |
JTree |
"Дерево" – показывает дерево, в котором каждая ветвь может быть с иконками и текстом, а узлы разворачиваются и сворачиваются. |
JTable |
"Таблица" – показ текстовой таблицы. Имеет возможность заполнения значениями по умолчанию на этапе проектирования. |
JToolBar |
"Тулбар" – панель инструментов. Обычно на нем размещают кнопки JToggleButton, для которых назначены иконки. |
JInternalFrame |
"Дочернее окно" – окно многооконного приложения. Его можно перемещать в пределах родительского окна – главного окна приложения. В настоящее время такой стиль приложений практически не используется. |
JLayeredPane |
"Панель с абсолютным позиционированием элементов" |
JDesktopPane |
"Панель – рабочий стол". Еще один тип панели с абсолютным позиционированием элементов. |
JOptionPane |
"Диалоговая панель" – предназначена для показа диалоговых форм. В отличие от большинства других компонентов работа идет с помощью методов класса. Имеются вызовы диалогов:
JOptionPane.INFORMATION_MESSAGE);
int option= javax.swing.JOptionPane.showConfirmDialog(null,"Продолжить?"); Проверка, какую кнопку нажали или диалог закрыли без осуществления выбора, осуществляется сравнением с константами javax.swing.JOptionPane.NO_OPTION, CANCEL_OPTION, CLOSED_OPTION, OK_OPTION, YES_OPTION
String input=javax.swing.JOptionPane.showInputDialog(null,"Введите значение:"); – при отказе от ввода возвращается null. Первый параметр – имя формы, в которой показывается диалог. Если он null – используется форма по умолчанию (главная форма приложения). Существуют варианты указанных выше методов, позволяющие при вызове задавать дополнительные параметры диалога (заголовок, надписи на кнопках и др.). |
JColorChooser |
"Диалог выбора цвета" – предназначен для выбора пользователем цвета. |
JFileChooser |
"Диалог выбора файла" – предназначен для выбора пользователем файлов. Перед использованием требуется положить его на какую-нибудь диалоговую форму ( JDialog, JFrame ) или какой-нибудь группирующий компонент формы. |
JFrame |
"Экранная форма". Показывается вызовом вида jFrame1.setVisible(true) ; |
JDialog |
"Диалоговая форма". Показывается вызовом вида jDialog1.setVisible(true) ; |
В Swing определены два типа контейнеров. К первому типу относятся контейнеры верхнего уровня: JFrame, JApplet, JWindow и JDialog. Они не принадлежат к числу подклассов JComponent, но тем не менее являются потомками Component и Container. В отличие от других компонентов Swing; контейнеры верхнего уровня являются тяжеловесными. По этим причинам контейнеры верхнего уровня составляют специальную группу в наборе Swing.
Как следует из названия, контейнер верхнего уровня должен находиться на вершине иерархии. Он не может включаться в состав других контейнеров. Более того, любая иерархия должна начинаться именно с контейнера верхнего уровня. В приложениях для этой цели чаще всего используется объект JFrame, в аплетах – JApplet.
Контейнеры второго типа – это легковесные контейнеры, являющиеся потомками JComponent. В качестве примеров легковесных контейнеров можно привести JPanel и JRootPane. Легковесные контейнеры могут включаться в другие контейнеры, поэтому они часто используются для объединения группы связанных друг с другом компонентов.
В каждом контейнере верхнего уровня реализован набор панелей. На вершине иерархии находится корневая панель, т.е. экземпляр класса JRootPane. Это легковесный контейнер, цель которого – управление другими панелями и, при необходимости, полосой меню. Корневая панель включает в себя "стеклянную" панель (glass pane), панель содержимого (content pane) и панель слоя (layered pane).
"Стеклянная" панель – это панель верхнего уровня, которая расположена поверх остальных панелей. По умолчанию "стеклянная" панель представляет собой "прозрачный экземпляр" JPanel. "Стеклянная" панель позволяет управлять событиями мыши, относящимися ко всему контейнеру, а не к содержащимся в нем компонентам. Она также обеспечивает рисование компонентов. В большинстве случаев необходимость непосредственного взаимодействия со "стеклянной" панелью не возникает.
Панель слоя представляет собой экземпляр класса JLayeredPane. Она поддерживает "третье измерение" для компонентов, т.е. определяет правила перекрытия одних компонентов другими. (Панель слоя позволяет задавать Z-расположение компонента, однако эта возможность используется сравнительно редко.) В составе панели слоя находится панель содержимого и может также находиться строка меню.
Несмотря на то что "стеклянная" панель и панель слоя – неотъемлемые части контейнера верхнего уровня и выполняют важные функции, их действия большей частью скрыты не только от пользователей, но и от разработчиков. Приложение в основном взаимодействует с панелью содержимого, так как именно в нее включаются визуальные компоненты. Другими словами, добавляя компонент, например кнопку, к контейнеру верхнего уровня, вы на самом деле добавляете его к панели содержимого. По умолчанию панель содержимого представляет собой "непрозрачный экземпляр" JPanel.
Для обращения к "стеклянной" панели, панели содержимого и панели слоя в JRootPane предусмотрены переменные glassPane, contentPane и layeredPane.