Стандартные диалоговые окна
Класс JOptionPane
Неотъемлемой частью большинства программ являются небольшие диалоговые окна: для вывода пользователю сообщения (например, сообщения об ошибке), для вопроса, ответ на который важен для выполнения текущего действия (например, просьба подтвердить или отменить запрашиваемую операцию). Эти диалоги могут быть запрограммированы вручную на основе класса JFrame. Однако ввиду того, что они являются типичными для многих программ, Swing предоставляет в распоряжение программиста несколько готовых классов для работы с ними.
Чаще всего используется класс JOptionPane, содержащий несколько статических методов, отображающих стандартные диалоги.
Метод showMessageDialog() выводит на экран диалоговое окно, информирующее пользователя. Оно содержит надпись, значок и кнопку ОК. Существует несколько разновидностей этого метода с разными наборами параметров. Самый простой из них showMessageDialog(Component component, Object content) требует указания компонента, над которым должно появиться диалоговое окно и содержимого окна. Чаще всего содержимым окна является некоторая строка, а вместо первого параметра передается null – тогда окно появляется по центру экрана. Вариант метода showMessageDialog(Component component, Object content, String title, int type) позволяет задать также свой заголовок окна и выбрать его тип (влияет на иконку в окне): сообщение об ошибке (ERROR_MESSAGE), предупреждение (WARNING_MESSAGE), информация (INFORMATION_MESSAGE).
Диалоговое окно является модальным. Это значит, что пока пользователь не нажмет в этом окне кнопку OK, программа окажется заблокирована – пользователь не сможет работать с другими окнами.
Пример:
public class SimpleWindow extends JFrame {
private JButton button;
SimpleWindow(){
super("Предупреждающий диалог");
setDefaultCloseOperation(EXIT_ON_CLOSE);
button = new JButton("Информация");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
JOptionPane.showMessageDialog(button, "Не надо было нажимать на эту кнопку", "Информация", JOptionPane.WARNING_MESSAGE);
}
});
getContentPane().setLayout(new FlowLayout());
getContentPane().add(button);
setSize(200,150);
}
}
Кнопка button сделана полем класса окна, чтобы можно было получить к ней доступ из анонимного класса-слушателя.
Другое часто используемое диалоговое окно – окно вопроса. В этом окне несколько кнопок, одну из которых пользователь должен нажать. В программу, вызывающую это диалоговое окно, возвращается информация о выборе пользователя, на основе которой и строится дальнейший ход работы программы.
Данное окно отображается методом showConfirmDialog(Component component, Object content). Параметры этого метода идентичны по смыслу параметрам showMessageDialog(), но в диалоговом окне появится не одна кнопка, а три: «Yes», «No» и «Cancel». Более того, метод возвращает значение, которое можно сравнить с константами YES_OPTION, NO_OPTION и CANCEL_OPTION. Логику работы с этим методом проиллюстрирует пример:
public class SimpleWindow extends JFrame {
JButton button; SimpleWindow(){
super("Предупреждающий диалог");
setDefaultCloseOperation(EXIT_ON_CLOSE);
button = new JButton("Выход");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
if (JOptionPane.showConfirmDialog(button, "Вы уверены, что хотите выйти?") == JOptionPane.YES_OPTION)
System.exit(0);
}
});
getContentPane().setLayout(new FlowLayout());
getContentPane().add(button);
setSize(200,150);
}
}
Метод имеет еще четыре разновидности с разным набором параметров, позволяющих изменять заголовок и значок окна, а также набор кнопок.
Класс JFileChooser
Swing содержит готовое окно для выбора файла (полезное, например, для программирования пункта меню Файл --> Открыть). Объект класса JFileChooser создается простым конструктором без параметров, после чего может выводиться на экран методом showOpenDialog(). Этот метод возвращает результат действий пользователя по выбору файла, который сравнивается с одной из следующих констант:
APPROVE_OPTION – выбор файла прошел успешно. Теперь можно методом getFile() получить выбранный файл.
CANCEL_OPTION – пользователь отменил выбор файла, щелкнув на кнопке Cancel.
ERROR_OPTION – при выборе файла произошла ошибка, либо пользователь закрыл диалоговое окно крестиком.
Метод showSaveDialog() отображает то же самое окно, но теперь оно работает в режиме сохранения. Пользователь выбирает директорию для сохранения файла и может ввести его имя. Метод возвращает результат того же типа, что иshowOpenDialog(). Если выбор пути для сохранения прошел успешно, вызов метода getFile() вернут путь, куда пользователь желает сохранить файл.
Следует иметь в виду, что сам класс JFileChooser ничего не открывает и не сохраняет. Он только возвращает путь к выбранному пользователем файлу. А открыть его или сохранить файл в заданном месте должна уже сама программа.
Метод setDialogTitle(String title) позволяет задать окну заголовок.
Апплеты
Приложения (applications), работающие самостоятельно (standalone) в JVM под управлением графической оболочки операционной системы, имеют собственное окно верхнего уровня типа JFrame, зарегистрированное в оконном менеджере (window manager) графической оболочки.
Кроме приложений, язык Java позволяет создавать апплеты (applets). Это программы, работающие в среде другой программы – браузера. Апплеты не нуждаются в окне верхнего уровня – им служит окно браузера. Они не запускаются JVM – их загружает браузер, который сам запускает JVM для выполнения апплета. Эти особенности отражаются на написании программы апплета.
С точки зрения языка Java, апплет – это всякое расширение класса Applet (JApplet), который, в свою очередь, расширяет класс panel. Таким образом, апплет – это панель специального вида, контейнер для размещения компонентов с дополнительными свойствами и методами.
Дата добавления: 2017-01-26; просмотров: 2430;