Лекция 2:

Объектно-ориентированное проектирование и платформа NetBeans

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 – к нижнему. По умолчанию менеджер сам выбирает варианты привязки, показывая их пунктирными линиями.

Полетаев Дмитрий
Полетаев Дмитрий
Изменяется размер ячеек памяти при записи оболочечных данных?Или в jawa это пока не предусмотренно
Максим Старостин
Максим Старостин
5 страница лекции 6
Наталья Алмаева
Наталья Алмаева
Россия
Александр Санчиров
Александр Санчиров
Россия, Москва