Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Тема 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 " Диалоговая панель" – предназначена для показа диалоговых форм. В отличие от большинства других компонентов работа идет с помощью методов класса. Имеются вызовы диалогов: · С сообщением: · javax.swing.JOptionPane.showMessageDialog(null, " Кнопку нажали" ); · JOptionPane.showMessageDialog(null, " Привет! ", " Заголовок сообщения", 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. Это легковесный контейнер, цель которого – управление другими панелями и, при необходимости, полосой меню. Корневая панель включает в себя " стеклянную" панель (glasspane), панель содержимого (contentpane) и панель слоя (layeredpane).

" Стеклянная" панель – это панель верхнего уровня, которая расположена поверх остальных панелей. По умолчанию " стеклянная" панель представляет собой " прозрачный экземпляр" JPanel. " Стеклянная" панель позволяет управлять событиями мыши, относящимися ко всему контейнеру, а не к содержащимся в нем компонентам. Она также обеспечивает рисование компонентов. В большинстве случаев необходимость непосредственного взаимодействия со " стеклянной" панелью не возникает.

Панель слоя представляет собой экземпляр класса JLayeredPane. Она поддерживает " третье измерение" для компонентов, т.е. определяет правила перекрытия одних компонентов другими. (Панель слоя позволяет задавать Z-расположение компонента, однако эта возможность используется сравнительно редко.) В составе панели слоя находится панель содержимого и может также находиться строка меню.

Несмотря на то что " стеклянная" панель и панель слоя – неотъемлемые части контейнера верхнего уровня и выполняют важные функции, их действия большей частью скрыты не только от пользователей, но и от разработчиков. Приложение в основном взаимодействует с панелью содержимого, так как именно в нее включаются визуальные компоненты. Другими словами, добавляя компонент, например кнопку, к контейнеру верхнего уровня, вы на самом деле добавляете его к панели содержимого. По умолчанию панель содержимого представляет собой " непрозрачный экземпляр" JPanel.

Для обращения к " стеклянной" панели, панели содержимого и панели слоя в JRootPane предусмотрены переменные glassPane, contentPane и layeredPane.

 


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-05-30; Просмотров: 617; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.012 с.)
Главная | Случайная страница | Обратная связь