Рубрики
Без рубрики

Java Swing – JOptionPane показывает пример ввода-вывода

– Javax Swing – JOptionPane показывает пример ввода-вывода

Автор оригинала: 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!");
        }

    }

}

Выход:

Рекомендации

  1. Как создавать диалоги
  2. Панель JOption класса – API Java 8
  3. Постоянные Значения Полей

Оригинал: “https://mkyong.com/swing/java-swing-joptionpane-showinputdialog-example/”