logo
Методичка Java

2.14. Основные компоненты пакетов swing и awt

Пока мы научились работать только с формами, кнопками и всплывающими меню. Перечислим ещё ряд полезных компонентов.

Во-первых, следует остановиться на том, что в палитре компонентов NetBeans предлагается три категории компонентов: из библиотеки Swing (пакет swing), библиотеки AWT (пакет awt), и категория Beans. В Sun Java Studio Enterprise имеется ещё одна категория – Layouts, “менеджеры размещения”, - компоненты, отвечающие за способ расположения и выравнивания компонентов на форме.

Библиотека Swing является основной для большинства современных графических приложений Java. В ней предлагаются следующие компоненты (перечислены в том порядке, в каком они возникают в палитре компонентов):

Компонент

Назначение компонента

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. Якорь привязывает компонент к соответствующей стороне формы.

Выбор менеджера размещения

Установка привязки к краям формы – якорей

Left – привязка к левому краю формы, Right – к правому, Top- к верхнему, Bottom – к нижнему. По умолчанию менеджер сам выбирает варианты привязки, показывая их пунктирными линиями.