Class JOptionPane
JOptionPane makes it easy to pop up a standard dialog box that prompts users for a value or informs them of something. For information about using JOptionPane , see How to Make Dialogs, a section in The Java Tutorial.
While the JOptionPane class may appear complex because of the large number of methods, almost all uses of this class are one-line calls to one of the static showXxxDialog methods shown below:
Method Name | Description |
---|---|
showConfirmDialog | Asks a confirming question, like yes/no/cancel. |
showInputDialog | Prompt for some input. |
showMessageDialog | Tell the user about something that has happened. |
showOptionDialog | The Grand Unification of the above three. |
Each of these methods also comes in a showInternalXXX flavor, which uses an internal frame to hold the dialog box (see JInternalFrame ). Multiple convenience methods have also been defined — overloaded versions of the basic methods that use different parameter lists.
All dialogs are modal. Each showXxxDialog method blocks the caller until the user’s interaction is complete.
icon | message |
input value | |
option buttons |
The basic appearance of one of these dialog boxes is generally similar to the picture above, although the various look-and-feels are ultimately responsible for the final result. In particular, the look-and-feels will adjust the layout to accommodate the option pane’s ComponentOrientation property.
Parameters:
The parameters to these methods follow consistent patterns:
- ERROR_MESSAGE
- INFORMATION_MESSAGE
- WARNING_MESSAGE
- QUESTION_MESSAGE
- PLAIN_MESSAGE
- DEFAULT_OPTION
- YES_NO_OPTION
- YES_NO_CANCEL_OPTION
- OK_CANCEL_OPTION
When the selection is changed, setValue is invoked, which generates a PropertyChangeEvent .
If a JOptionPane has configured to all input setWantsInput the bound property JOptionPane.INPUT_VALUE_PROPERTY can also be listened to, to determine when the user has input or selected a value.
- YES_OPTION
- NO_OPTION
- CANCEL_OPTION
- OK_OPTION
- CLOSED_OPTION
JOptionPane.showInternalMessageDialog(frame, "information", "information", JOptionPane.INFORMATION_MESSAGE);
JOptionPane.showConfirmDialog(null, "choose one", "choose one", JOptionPane.YES_NO_OPTION);
Show an internal information dialog with the options yes/no/cancel and message ‘please choose one’ and title information:
JOptionPane.showInternalConfirmDialog(frame, "please choose one", "information", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.INFORMATION_MESSAGE);
Show a warning dialog with the options OK, CANCEL, title ‘Warning’, and message ‘Click OK to continue’:
Object[] options = < "OK", "CANCEL" >; JOptionPane.showOptionDialog(null, "Click OK to continue", "Warning", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[0]);
Show a dialog asking the user to type in a String: String inputValue = JOptionPane.showInputDialog(«Please input a value»); Show a dialog asking the user to select a String:
Object[] possibleValues = < "First", "Second", "Third" >;
Object selectedValue = JOptionPane.showInputDialog(null, "Choose one", "Input", JOptionPane.INFORMATION_MESSAGE, null, possibleValues, possibleValues[0]);
Direct Use:
To create and use an JOptionPane directly, the standard pattern is roughly as follows:
JOptionPane pane = new JOptionPane(arguments); pane.set.Xxxx(. ); // Configure JDialog dialog = pane.createDialog(parentComponent, title); dialog.show(); Object selectedValue = pane.getValue(); if(selectedValue == null) return CLOSED_OPTION; //If there is not an array of option buttons: if(options == null) < if(selectedValue instanceof Integer) return ((Integer)selectedValue).intValue(); return CLOSED_OPTION; >//If there is an array of option buttons: for(int counter = 0, maxCounter = options.length; counter < maxCounter; counter++) < if(options[counter].equals(selectedValue)) return counter; >return CLOSED_OPTION;
Warning: Swing is not thread safe. For more information see Swing’s Threading Policy.
Warning: Serialized objects of this class will not be compatible with future Swing releases. The current serialization support is appropriate for short term storage or RMI between applications running the same version of Swing. As of 1.4, support for long term storage of all JavaBeans has been added to the java.beans package. Please see XMLEncoder .
Окно сообщения в Java
Окно сообщения в Java — это всплывающее окно, которое появляется на экране для отображения какого-либо сообщения и ожидает подтверждения от пользователя. Термин JOptionPane — это предоставляемый Java класс, который предоставляет пользователям привилегию показывать диалоговые окна сообщений. Этот класс наследуется от класса JComponent и присутствует в пакете javax.swing .
Ниже приведен блок кода, показывающий, как работает окно сообщения в Java.
import javax.swing.*; public class DialogueBoxPopUp public static void main(String[] args) JOptionPane.showMessageDialog(null, "Hi, In the message box", "PopUp Dialog", JOptionPane.INFORMATION_MESSAGE); > >
В приведенном выше простом блоке кода класс JOptionPane предлагает пользователям окна сообщений и ожидает ответа. В классе есть несколько статических методов, которые служат для пользователя служебными программами. Метод showConfirmDialog задает вопрос и подтверждает варианты да , нет и отмена . Метод showInputDialog предлагает пользователю ввести некоторые данные. Функция showMessageDialog сообщает пользователю о некоторых событиях.
Вышеупомянутый блок использует перегруженную версию метода showMessageDialog и принимает четыре параметра. Во-первых, аргумент parentComponent проверяет фрейм, в котором может отображаться компонент. Если значение является нулевым значением, то используется фрейм по умолчанию. В предыдущей программе передается нулевой фрейм, поэтому код использует фрейм по умолчанию.
Далее идет аргумент message , который выводит на экран сообщение Object . Аргумент title принимает строку заголовка для всплывающего окна. Сообщение в приведенном выше блоке имеет заголовок Всплывающее диалоговое окно , которое появляется в верхней части диалогового окна.
messageType — это тип сообщения, которое выполняет значения ERROR_MESSAGE , INFORMATION_MESSAGE , WARNING_MESSAGE , QUESTION_MESSAGE или PLAIN_MESSAGE . Эти значения представлены как статические и конечные значения как тип сообщения в классе JOptionPane . Код использует INFORMATION_MESSAGE в качестве типа сообщения.
Проверьте результат предыдущей программы здесь:
Если тип сообщения изменится на JOptionPane.ERROR_MESSAGE , появится диалоговое окно сообщения об ошибке, как на изображении ниже.
Если тип сообщения изменится на JOptionPane.WARNING_MESSAGE , диалоговое окно с предупреждением будет выглядеть, как показано ниже.
Есть еще несколько типов сообщений, которые можно использовать при необходимости.
Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.
Сопутствующая статья — Java GUI
Swing Examples — Show Error message Dialog
Following example showcase how to show an error message alert in swing based application.
We are using the following APIs.
- JOptionPane − To create a standard dialog box.
- JOptionPane.showMessageDialog() − To show the message alert.
- JOptionPane.ERROR_MESSAGE − To mark the alert message as error.
Example
import java.awt.BorderLayout; import java.awt.FlowLayout; import java.awt.LayoutManager; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JPanel; public class SwingTester < public static void main(String[] args) < createWindow(); >private static void createWindow() < JFrame frame = new JFrame("Swing Tester"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); createUI(frame); frame.setSize(560, 200); frame.setLocationRelativeTo(null); frame.setVisible(true); >private static void createUI(final JFrame frame) < JPanel panel = new JPanel(); LayoutManager layout = new FlowLayout(); panel.setLayout(layout); JButton button = new JButton("Click Me!"); button.addActionListener(new ActionListener() < @Override public void actionPerformed(ActionEvent e) < JOptionPane.showMessageDialog(frame, "Please ensure compliance!", "Swing Tester", JOptionPane.ERROR_MESSAGE); >>); panel.add(button); frame.getContentPane().add(panel, BorderLayout.CENTER); > >