ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 08.11.2023
Просмотров: 147
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Лабораторная работа 7
Использование системы Swing в Java
1. Цель работы
Целью работы является приобретение навыков программирования графических приложений Java с использованием элементов управления AWT.
2. Состав рабочего места
2.1. Оборудование: IBM-совместимый персональный компьютер (ПК).
2.2. Программное обеспечение: операционная система Windows, Java 2 SDK версии 6.0 и выше, пакет NetBeans IDE 6.1.
3. Краткие теоретические сведения
3.1. Основные компоненты Swing
3.1.1. Структура компонент Swing
Компоненты Swing можно разделить на следующие типы:
-
контейнеры верхнего уровня (классы JWindow, JFrame, JDialog и JApplet); -
специализированные контейнеры (классы JInternalFrame, JLayeredPane, JRootPane и JOptionPane); -
общецелевые контейнеры (классы JPanel, JScrollPane, JSplitPane, JTabbedPane и JToolBar); -
компоненты управления (классы JButton, JCheckBox, JRadioButton, JToggleButton, JComboBox, JList, JMenuBar, JMenu, JMenuItem, JCheckboxMenuItem, JRadioButtonMenuItem, JSeparator и JSlider); -
нередактируемые информационные компоненты (классы JLabel, JProgressBar и JToolTip); -
редактируемые информационные компоненты (классы JColorChooser, JFileChooser, JTable, JTree, JTextField, JPasswordField, JTextArea, JEditorPane и JTextPane).
В отличие от компонентов AWT, компоненты системы Swing способны работать только по модели делегирования событий.
3.1.2. Контейнеры верхнего уровня и специализированные контейнеры
Так же, как и для AWT, для создания окон графических приложений используется не класс JWindow, а класс JFrame (окна, создаваемые классом JWindow не содержат наименования окна и кнопок управления окном). Приложения с графическим интерфейсом использует, по крайней мере, один фрейм. Апплеты также могут использовать фреймы.
Для создания окон, которые зависят от другого окна (например, исчезают, когда сворачивается окно, в котором они используются) применяются диалоговые окна класса
JDialog.
Апплеты, использующие компоненты Swing, должны быть подклассами класса JApplet.
Любая программа, которая использует компоненты Swing, содержит, по крайней мере, один контейнер верхнего уровня. Этот контейнер является корнем иерархии контейнеров, содержащих все компоненты Swing.
Как правило, отдельное графическое приложение имеет, по крайней мере, одну иерархию контейнеров, в которой корнем является JFrame. Диалоговое окно или апплет также образуют иерархию контейнеров, корнем которой является JDialog или JApplet. Например, если приложение содержит одно главное окно и два диалоговых окна, то она содержит три иерархии контейнеров.
3.1.2.1. Корневая панель
Каждый контейнер верхнего уровня базируется на промежуточном, скрытом, контейнере, называемом корневой панелью (root pane). Корневая панель определена в классе JRootPane.
Сама корневая панель обычно не используется, а используются ее компоненты, которые корневая панель (класс) предоставляет фрейму (или другому контейнеру верхнего уровня). Корневая панель содержит следующие компоненты:
-
слоистая панель (layered pane); -
панель содержимого (content pane); -
строка меню (menu bar) – необязательный компонент; -
стеклянная панель (glass bar).
Единственным обязательным контейнером верхнего уровня является панель содержимого.
3.1.2.2. Панель содержимого
Панель содержимого содержит все компоненты Swing (кнопки, надписи, текстовые поля и т.д.). Поскольку для контейнеров верхнего уровня содержимое окна определяется с помощью JRootPanel и должно, в отличие от окон AWT, определяться вручную, для добавления компонент или установки менеджера компоновки используются не методы add() и setLayout(), а методы получения и установки панели содержимого:
public Container getContentPane()
и
public void setContentPane(Container contentPane),
которые определены в классах JFrame, JDialog, JApplet и JInternalFrame.
Так, добавление текстового поля во фрейм, диалоговое окно, апплет или внутренний фрейм с установкой менеджера компоновки FlowLayout выглядит следующим образом:
Container contentPane = getContentPane();
JTextField inputField = new JTextField(15);
contentPane.setLayout(new FlowLayout());
contentPane.add(inputField);
Следует отметить, что для всех контейнеров верхнего уровня (включая JApplet) менеджером компоновки по умолчанию является
BorderLayout.
К контейнеру верхнего уровня может быть добавлена строка меню (menu bar). Строка меню также располагается внутри главного контейнера, но за пределами панели содержимого.
3.1.2.4. Класс JFrame
Фрейм в Swing создается с помощью конструкторов
JFrame()
или
JFrame (String name)
где name – имя фрейма.
Для фрейма можно использовать приведенные выше методы получения и установки корневой панели, слоистой панели, панели содержимого, строки меню и стеклянной панели, причем должно быть получено, по крайней мере, значение панели содержимого.
Другим отличием JFrame от Frame является наличие у JFrame свойства, определяющего операцию закрытия окна по умолчанию. Для Frame по умолчанию ничего не происходит, если делается попытка закрыть окно, а JFrame прячется. Метод
public void setDefaultCloseOperation(int operation)
класса JFrame позволяет определить три операции, которые могут выполняться при закрытии окна JFrame:
-
DO_NOTHING_ON_CLOSE – ведет себя так же, как AWT Frame; -
HIDE_ON_CLOSE – поведение по умолчанию (для того, чтобы окно снова появилось на экране, необходимо использовать метод setVisible(true); -
DISPOSE_ON_CLOSE – окно закрывается.
3.1.2.5. Диалоговые окна
Диалоговые окна можно создавать либо с помощью класса JDialog, либо используя класс JOptionPane.
Основными конструкторами класса JDialog являются:
JDialog();
JDialog(Dialog owner)
JDialog(Dialog owner, boolean modal)
JDialog(Dialog owner, String title)
JDialog(Dialog owner, String title, boolean modal)
JDialog(Frame owner)
JDialog(Frame owner, boolean modal)
JDialog(Frame owner, String title)
JDialog(Frame owner, String title, boolean modal)
Первый конструктор создает немодальное диалоговое окно без имени. Параметры owner, title
и modal в остальных конструкторах задают соответственно родителя данного диалогового окна, имя окна и окна (true – модальное окно или false – немодальное окно).
Окно класса JDialog имеет те же черты, что JFrame и прямое использование объектов класса JDialog аналогично прямому использованию объекта JFrame.
Класс JOptionPane облегчает вывод стандартных диалоговых или информационных окон.
Для класса JOptionPane определены следующие основные конструкторы:
JOptionPane();
JOptionPane(Object message, int messageType,
int optionType, Icon icon, Object[] options,
Object initialValue);
Кроме этого определены конструкторы, содержащие соответственно только первый параметр, только первые два параметра, только первые три параметра, только первые четыре параметра, только первые пять параметров второго конструктора.
Все использования этого класса обычно сводятся к вызову одного из его методов:
-
static int showConfirmDialog(Component parentComponent, Object message, String title, int optionType, int messageType, Icon icon) – задает вопрос на который требуется ответ типа Yes, No или Cancel. Существуют также следующие три метода showConfirmDialog(): метод, содержащий первые два параметра, метод, содержащий первые четыре параметра и метод, содержащий первые пять параметров, приведенного выше метода; -
static Object showInputDialog(Component parentComponent, Object message, String title, int messageType, Icon icon, Object[] selectionValues, Object initialValue) – позволяет ввести некоторый текст. Существуют также следующие пять методов showInputDialog(): метод, содержащий второй параметр, метод, содержащий второй и седьмой параметры, метод, содержащий первые два параметра, метод, содержащий первый, второй и седьмой параметры, и метод, содержащий первые три параметра и седьмой параметр; -
static void showMessageDialog(Component parentComponent, Object message, String title, int messageType, Icon icon) – позволяет вывести некоторое сообщение. Существуют также следующие два метода showMessageDialog: метод, содержащий первые два параметра и метод, содержащий первые четыре параметра; -
static int showOptionDialog(Component parentComponent, Object message, String title, int optionType, int messageType, Icon icon, Object[] options, Object initialValue) – объединяет функции перечисленных выше диалоговых окон.
Параметры в приведенных конструкторах и методах имеют следующий смысл:
-
parentComponent – определяет компонент, являющийся родителем данного диалогового окна (если этот параметр равен null, в качестве родителя предполагается фрейм по умолчанию); -
message – описательное сообщение, помещаемое в диалоговое окно (следует иметь в виду, что это объект класса Object); -
selectionValues – массив объектов, рассматриваемый как набор сообщений; -
icon – изображение, выводимое в диалоге (значение по умолчанию определяется значением параметра messageType); -
messageType – определяет тип сообщения. Допустимы следующие значения: ERROR_MESSAGE, INFORMATION_MESSAGE, WARNING_MESSAGE, QUESTION_MESSAGE и PLAIN_MESSAGE; -
optionType – определяет набор кнопок, которые будут выведены в нижней части диалогового окна: DEFAULT_OPTION, YES_NO_OPTION, YES_NO_CANCEL_OPTION и OK_CANCEL_OPTION -
options – более детальное описание набора кнопок, которые будут выведены в нижней части диалогового окна (если задан объект класса Component, он прямо добавляется в нижнюю часть диалогового окна, если объект типа Icon, создается кнопка класса JButton, для объектов других классов производится преобразование объекта в строку, которая выводится на кнопке класса JButton); -
title – имя диалогового окна; -
initialValue – вводимое значение по умолчанию.
Для методов и допустимы следующие возможные значения возвращаемого значения: YES_OPTION, NO_OPTION, CANCEL_OPTION, OK_OPTION и CLOSED_OPTION.