Опубликован: 04.12.2009 | Доступ: свободный | Студентов: 8414 / 657 | Оценка: 4.30 / 3.87 | Длительность: 27:27:00
Лекция 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 – к нижнему. По умолчанию менеджер сам выбирает варианты привязки, показывая их пунктирными линиями.

Полетаев Дмитрий
Полетаев Дмитрий
Не очень понятно про оболочечные Данные,ячейки памяти могут наверно размер менять,какое это значение те же операции только ячейки больше,по скорости тоже самое
Максим Старостин
Максим Старостин

Код с перемещением фигур не стирает старую фигуру, а просто рисует новую в новом месте. Точку, круг.