Автор оригинала: Marilena.
Это обзор метода showInputDialog()
класса JOptionPane
. С помощью этого метода мы можем запрашивать у пользователя ввод при настройке нашего диалогового окна. showConfirmDialog
возвращает либо Строку
, либо Объект
и может быть вызван с использованием следующих комбинаций параметров:
Объект (возвращает строку)
– Показывает диалоговое окно вопрос-сообщение, запрашивающее ввод от пользователя.Объект, Объект (возвращает строку)
– Показывает диалоговое окно вопрос-сообщение, запрашивающее ввод от пользователя с инициализированным значением ввода.Компонент, Объект (возвращает строку)
– Показывает диалоговое окно вопрос-сообщение, запрашивающее ввод от пользователя. Возвращает входные данные в виде строки. Компонент определяет фрейм, в котором отображается диалоговое окно; если значение равно null или если родительский компонент не имеет фрейма, используется фрейм по умолчанию.Компонент, Объект, Объект (возвращает строку)
– То же, что и выше. Единственное отличие состоит в том, что поле ввода имеет начальное значение, заданное с помощью последнего параметра объекта.Компонент, Объект, Строка, int (возвращает строку)
– Показывает диалоговое окно, запрашивающее ввод от пользователя. Диалоговое окно имеет заголовок, заданный с помощью параметра String, и тип сообщения, заданный с помощью параметра int. Различные типы сообщений дляJOptionPane
, являются:- СООБЩЕНИЕ ОБ ОШИБКЕ
- ИНФОРМАЦИОННОЕ СООБЩЕНИЕ
- ПРЕДУПРЕЖДЕНИЕ_МЕССАЖ
- ВОПРОС_СООБЩЕНИЕ
- ПРОСТОЕ СООБЩЕНИЕ
Компонент, Объект, Строка, int, Значок, Объект[], Объект (возвращает объект)
– Запрашивает у пользователя ввод в диалоговом окне блокировки, в котором можно указать начальный выбор, возможные варианты выбора и все другие параметры. Значок (если он не равен нулю) отображается внутри диалогового окна и заменяет значок типа сообщения по умолчанию.
1. Объект – Самый простой способ получить пользовательский ввод
Пример диалогового окна вопрос-сообщение, которое получает пользовательский ввод в виде Строки
:
package com.mkyong.inputDialog; import javax.swing.JOptionPane; public class SimpleInputDialog1 { public static void main(String[] args){ String m = JOptionPane.showInputDialog("Anyone there?"); System.out.println(m); } }
Выход:
Когда вы набираете “Hellooooo!!!! ” в поле ввода и нажмите “ОК”.
Hellooooo!!!!
2. Объект и объект – Установка начального значения над входным
Пример диалогового окна вопрос-сообщение с начальным значением, которое вводится пользователем в виде Строки
:
package com.mkyong.inputDialog; import javax.swing.JOptionPane; public class SimpleInputDialog2 { public static void main(String[] args){ String m = JOptionPane.showInputDialog("Anyone there?", 42); System.out.println(m); } }
Выход:
3. Компонент и объект – Настройка диалогового окна в родительском компоненте
Если мы установим для Компонента
значение null, результат будет таким же, как и для числа 1. Для этого примера мы создадим JFrame
для размещения нашего диалога. Рамка закрывается, если пользователь не введет что-либо в поле:
package com.mkyong.inputDialog; import java.awt.Color; import javax.swing.JFrame; import javax.swing.JOptionPane; public class InputDialogInFrame extends JFrame{ public InputDialogInFrame() { getContentPane().setBackground(Color.DARK_GRAY); setTitle("Input Dialog in Frame"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); setResizable(false); setSize(400, 300); getContentPane().setLayout(null); } private void closeIt(){ this.getContentPane().setVisible(false); this.dispose(); } public static void main(String[] args){ InputDialogInFrame frame = new InputDialogInFrame(); String m = JOptionPane.showInputDialog(frame, "Anyone there?"); if(m.isEmpty()){ frame.closeIt(); } } }
Выход:
4. Компонент, Объект и Объект – Настройка диалогового окна в родительском компоненте с начальным значением
Если мы установим для Компонента
значение null, результат будет таким же, как и для числа 2. Для этого примера мы немного изменим код с номера 3:
package com.mkyong.inputDialog; import java.awt.Color; import javax.swing.JFrame; import javax.swing.JOptionPane; public class InputDialogInFrame extends JFrame{ public InputDialogInFrame() { getContentPane().setBackground(Color.DARK_GRAY); setTitle("Input Dialog in Frame"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); setResizable(false); setSize(400, 300); getContentPane().setLayout(null); } private void closeIt(){ this.getContentPane().setVisible(false); this.dispose(); } public static void main(String[] args){ InputDialogInFrame frame = new InputDialogInFrame(); String m = JOptionPane.showInputDialog(frame, "Anyone there?", 42); if(m.isEmpty() || m.equals("42")){ frame.closeIt(); } } }
Выход:
5. Компонент, Объект, Строка и int – Давайте дадим нашему диалоговому окну ввода заголовок и выберем тип сообщения
Пример информационного сообщения с использованием значка по умолчанию через JOptionPane.ИНФОРМАЦИОННОЕ СООБЩЕНИЕ
:
package com.mkyong.inputDialog; import javax.swing.JOptionPane; public class SimpleInputDialog5 { public static void main(String[] args){ String m = JOptionPane.showInputDialog(null, "Broccoli is tasty!", "Green dinner", JOptionPane.INFORMATION_MESSAGE); System.out.println(m); } }
Выход:
6. Компонент, объект, Строка, int, Значок, Объект[] и диалоговое окно ввода объекта с предопределенными параметрами
6.1 В этом примере мы предоставляем пользователю набор опций на выбор. Различные параметры отображаются в виде выпадающего меню с выбранным начальным значением:
package com.mkyong.inputDialog; import javax.swing.ImageIcon; import javax.swing.JOptionPane; public class InputDialog6a { public static void main(String[] args) { String[] options = {"I adore turtles", "Yes", "Maybe", "Urm...", "No", "Hate them"}; ImageIcon icon = new ImageIcon("src/images/turtle32.png"); String n = (String)JOptionPane.showInputDialog(null, "Do you like turtles??", "I like turtles", JOptionPane.QUESTION_MESSAGE, icon, options, options[2]); System.out.println(n); } }
Выход:
Когда вы выберете опцию “Я обожаю черепах” и нажмете “ОК”,
I adore turtles
6.2 Пример использования массива целых чисел:
package com.mkyong.inputDialog; import javax.swing.JOptionPane; public class InputDialog6b { public static void main(String[] args) { Integer[] options = {2, 3, 5, 7, 9, 11}; int n = (Integer)JOptionPane.showInputDialog(null, "Pick a number that is not prime:", "Prime numbers", JOptionPane.QUESTION_MESSAGE, null, options, options[2]); System.out.println(n); } }
Выход:
6.3 Пример, в котором мы используем преимущества динамики массив объектов
и тип возвращаемого объекта метода:
package com.mkyong.inputDialog; import javax.swing.ImageIcon; import javax.swing.JOptionPane; public class InputDialog6c { public static void main(String[] args) { Object[] options = {2, "No", 5.6, true}; Object l = JOptionPane.showInputDialog(null, "Just pick something already!", "Mix & Match", JOptionPane.ERROR_MESSAGE, null, options, options[0]); if(l instanceof Integer){ System.out.println("You picked an Integer!"); }else if(l instanceof String){ System.out.println("You picked a String!"); }else if(l instanceof Double){ System.out.println("You picked a Double!"); }else if(l instanceof Boolean){ System.out.println("You picked a Boolean!"); } } }
Выход:
Когда выбрано “2” и пользователь нажимает “ОК”,:
You picked an Integer!
Когда выбрано “Нет” и пользователь нажимает “ОК”:
You picked a String!
Когда выбран “5.6” и пользователь нажимает “ОК”,:
You picked a Double!
Когда выбрано “true” и пользователь нажимает “ОК”,:
You picked a Boolean!
7. Более продвинутый пример
Во всех предыдущих примерах вместо Объекта
использовалась Строка
; для этого примера мы будем использовать JPanel
вместо Объекта
. Панель
настроена и к ней добавлена Метка
. Мы также манипулируем размером Joptionpane
с помощью вызова UIManager
.
package com.mkyong.inputDialog; import java.awt.Color; import java.awt.Dimension; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.UIManager; import javax.swing.JLabel; import java.awt.Font; import javax.swing.SwingConstants; public class InputDialogPanel { public static void main(String[] args) { JPanel panel = new JPanel(); panel.setBackground(new Color(0, 0, 0)); panel.setSize(new Dimension(250, 32)); panel.setLayout(null); JLabel label = new JLabel("It's your choice! :)"); label.setForeground(new Color(255, 255, 0)); label.setHorizontalAlignment(SwingConstants.CENTER); label.setFont(new Font("Arial", Font.BOLD, 11)); label.setBounds(0, 0, 250, 32); panel.add(label); UIManager.put("OptionPane.minimumSize",new Dimension(270, 120)); Object[] options = {2, "No", 5.6, true}; Object l = JOptionPane.showInputDialog(null, panel, "Mix & Match", JOptionPane.PLAIN_MESSAGE, null, options, options[3]); if(l instanceof Integer){ System.out.println("You picked an Integer!"); }else if(l instanceof String){ System.out.println("You picked a String!"); }else if(l instanceof Double){ System.out.println("You picked a Double!"); }else if(l instanceof Boolean){ System.out.println("You picked a Boolean!"); } } }
Выход:
Рекомендации
Оригинал: “https://mkyong.com/swing/java-swing-joptionpane-showinputdialog-example/”