2.15. Основные компоненты пакетов swing и awt
Пока мы научились работать только с формами, кнопками и всплывающими меню. Перечислим еще ряд полезных компонентов.
Во-первых, следует остановиться на том, что в палитре компонентов NetBeans предлагается три категории компонентов: из библиотеки Swing (пакет swing ), библиотеки AWT (пакет awt ), и категория Beans. В Sun Java Studio Enterprise имеется еще одна категория – Layouts, "менеджеры размещения", - компоненты, отвечающие за способ расположения и выравнивания компонентов на форме.
Библиотека Swing является основной для большинства современных графических приложений Java. В ней предлагаются следующие компоненты (перечислены в том порядке, в каком они возникают в палитре компонентов):
Таблица
2.6.
№ |
Компонент |
Назначение компонента |
1 |
JLabel |
"Метка" - вывод однострочного неформатированного текста |
2 |
JButton |
"Кнопка" - кнопка с текстом и/или с картинкой |
3 |
JToggleButton |
"Защелкивающаяся кнопка" - кнопка с фиксацией. Может быть одной из нескольких таких кнопок в группе, в этом случае нажатие одной кнопки вызывает отпускание другой. Работа группы обеспечивается компонентом ButtonGroup, который должен быть перетащен на форму, а затем назначен свойству buttonGroup. |
4 |
JCheckBox |
"Чекбокс" - пункт выбора с независимой фиксацией. |
5 |
JRadioButton |
"Радиокнопка" - пункт выбора с зависимой фиксацией, должен быть одним из нескольких в группе. Работа группы обеспечивается компонентом ButtonGroup. |
6 |
ButtonGroup |
Обеспечивает работу групп компонентов JToggleButton или JRadioButton. |
7 |
JComboBox |
"Комбобокс" - выпадающий список. |
8 |
JList |
Прокручивающийся список. |
9 |
JTextField |
"Текстовое поле" - однострочный пункт ввода и редактирования текста. |
10 |
JTextArea |
"Текстовая область" - многострочный пункт ввода и редактирования текста. |
11 |
JPanel |
"Панель" - группирующий компонент, позволяющий располагать на себе другие компоненты. Передвижение панели перемещает вместе с ней все расположенные на ней компоненты. По умолчанию свойство layout ("размещение") установлено как FlowLayout - "в виде потока". Для простых задач вместо этого компонента лучше использовать JLayeredPane. |
12 |
JTabbedPane |
"Панель с закладками" - каждый положенный на нее компонент показывается в отдельной закладке. Чтобы разместить на одной закладке несколько компонентов, сначала положите на панель с закладками обычную панель. Для того, чтобы создать последующие закладки, выделите панель с закладками, вызовите правой кнопкой мыши всплывающее меню, пункт Add From Palette ("добавить из палитры"), и добавьте еще одну панель или другой компонент. |
13 |
JScrollBar |
Независимая полоса прокрутки. Используется редко - для программно управляемой прокрутки содержимого компонентов, для которых отсутствуют встроенные полосы прокрутки. |
14 |
JScrollPane |
"Панель с полосами прокрутки" |
15 |
JMenuBar |
"Меню формы" - предназначено для расположения в нем компонентов типа JMenu (заголовков меню). |
16 |
JPopupMenu |
"Всплывающее меню" - предназначено для расположения в нем компонентов типа JMenuItem (пунктов меню). |
17 |
JSlider |
"Ползунок". Используется для плавной регулировки числовых величин, а также связанных с ними программно регулируемых изменений. |
18 |
JProgressBar |
"Прогрессбар" - полоса показа доли выполнения задачи. Показывает уровень, отражающий долю выполнения задачи |
19 |
JSplitPane |
"Панель с разделителем" - панель, состоящая из двух частей, между которыми имеется линия разделителя, которую можно перетаскивать мышью, меняя взаимный размер частей. |
20 |
JFormattedTextField |
"Поле ввода форматированного текста" |
21 |
JPasswordField |
"Поле ввода пароля" - вводимый текст отображается звездочками. |
22 |
JSpinner |
"Спиннер" - поле ввода числа с кнопками увеличения/уменьшения. |
23 |
JSeparator |
"Сепаратор" - разделительная линия. Используется в декоративных целях для разделения рабочих областей формы и других группирующих компонентов. |
24 |
JTextPane |
"Текстовая панель". По умолчанию автоматически переносит текст на новую строку. А не располагает в одну строку с показом горизонтального скроллера, как это делает JTextArea. |
25 |
JEditorPane |
"Панель текстового редактора" |
26 |
JTree |
"Дерево" - показывает дерево, в котором каждая ветвь может быть с иконками и текстом, а узлы разворачиваются и сворачиваются. |
27 |
JTable |
"Таблица" - показ текстовой таблицы. Имеет возможность заполнения значениями по умолчанию на этапе проектирования. |
28 |
JToolBar |
"Тулбар" - панель инструментов. Обычно на нем размещают кнопки JToggleButton, для которых назначены иконки. |
29 |
JInternalFrame |
"Дочернее окно" - окно многооконного приложения. Его можно перемещать в пределах родительского окна - главного окна приложения. В настоящее время такой стиль приложений практически не используется. |
30 |
JLayeredPane |
"Панель с абсолютным позиционированием элементов" |
31 |
JDesktopPane |
"Панель - рабочий стол". Еще один тип панели с абсолютным позиционированием элементов. |
32 |
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 - используется форма по умолчанию (главная форма приложения).
Существуют варианты указанных выше методов, позволяющие при вызове задавать дополнительные параметры диалога (заголовок, надписи на кнопках и др.).
|
33 |
JColorChooser |
"Диалог выбора цвета" - предназначен для выбора пользователем цвета. |
34 |
JFileChooser |
"Диалог выбора файла" - предназначен для выбора пользователем файлов. Перед использованием требуется положить его на какую-нибудь диалоговую форму ( JDialog, JFrame ) или какой-нибудь группирующий компонент формы. |
35 |
JFrame |
"Экранная форма". Показывается вызовом вида jFrame1.setVisible(true) ; |
36 |
JDialog |
"Диалоговая форма". Показывается вызовом вида jDialog1.setVisible(true) ; |
Очень часто в приложении требуется вывести служебную информацию. В старых версиях Java для этого служил вызов System.out.println("Текст сообщения"). В учебных проектах и при выводе отладочной информации этот метод до сих пор удобен. Но предоставлять таким образом информацию конечному пользователю представляется анахронизмом. Для выдачи пользователю информационного сообщения лучше использовать вызов
JOptionPane.showMessageDialog(null,"Привет!","Заголовок сообщения",
JOptionPane.INFORMATION_MESSAGE);
Если требуется вывести предупреждение об ошибке, последний параметр должен иметь значение JOptionPane.ERROR_MESSAGE, другое предупреждение - JOptionPane.WARNING_MESSAGE, вопрос - JOptionPane.QUESTION_MESSAGE. Наконец, если не требуется сопровождать вопрос иконкой на диалоговой панели, параметр должен быть JOptionPane.PLAIN_MESSAGE.
Библиотека компонентов AWT (Abstract Window Toolkit - Абстрактный Инструментарий графического Окна) является устаревшей по сравнению с библиотекой Swing, хотя сам пакет awt до сих пор является основой графики Java. В библиотеке AWT имеются практически те же компоненты, что и в Swing, но в меньшем количестве и в более примитивном варианте - с худшим дизайном и меньшей функциональностью.
Единственный компонент AWT, у которого нет прямого аналога в Swing – компонент типа Canvas – "холст для рисования". Он обеспечивал вывод графических примитивов. Например, следующим образом:
java.awt.Graphics g=canvas1.getGraphics();
g.drawLine(10,10,100,100);
В Swing для этих целей можно рисовать по любому компоненту, например, по панели, или даже по кнопке:
java.awt.Graphics g=jPanel1.getGraphics();
g.drawLine(10,10,100,100);
g=jButton3.getGraphics();
g.drawLine(10,10,100,100);
Еще одна категория, на которой следует остановиться, это компоненты Layout – менеджеры размещения. Разработчики Java предложили оригинальную, но очень неоднозначную идею организации расположения компонентов на форме. Вместо того, чтобы явно указывать позиции компонентов на этапе проектирования или работы программы, и использовать якоря ( anchors ) для привязки краев компонентов к краям группирующего компонента, как это делается в других языках программирования, предлагается использовать тот или иной менеджер размещения. При изменении размера формы взаимное расположение компонентов будет меняться в зависимости от типа менеджера. Например, "обычное" размещение с фиксированным положением достигается с помощью размещения на форме менеджера AbsoluteLayout. В NetBeans это делается через пункт Set Layout всплывающего меню, как показано на рисунке.
По умолчанию действует режим Free Design - "свободный дизайн". Если установить менеджер размещения AbsoluteLayout, в редакторе свойств компонентов оказываются доступны свойства x и y – координаты компонентов.
Использовать якоря все же можно, но с ограниченными возможностями и только в менеджере размещения Free Design – в других менеджерах они не работают. Для использования якоря следует щелкнуть с помощью правой клавиши мыши по компоненту, расположенному на форме (например, кнопке), и в появившемся меню выбрать пункт Anchors. Якорь привязывает компонент к соответствующей стороне формы.
Рис.
2.37.
Выбор менеджера размещения
Рис.
2.38.
Установка привязки к краям формы – якорей
Left – привязка к левому краю формы, Right – к правому, Top - к верхнему, Bottom – к нижнему. По умолчанию менеджер сам выбирает варианты привязки, показывая их пунктирными линиями.