Java Swing - пример JOptionPane showInputDialog

Java Swing - пример JOptionPane showInputDialog

Это обзор методаshowInputDialog() классаJOptionPane. С помощью этого метода мы можем запросить ввод данных пользователем при настройке нашего диалогового окна. showConfirmDialog возвращает либоString, либоObject и может быть вызван с использованием следующих комбинаций параметров:

Object (returns String) - показывает диалоговое окно с вопросом-сообщением, запрашивающее ввод от пользователя.

Object, Object (returns String) - показывает диалоговое окно с вопросом-сообщением, запрашивающее ввод от пользователя с инициализированным вводимым значением.

Component, Object (returns String) - показывает диалоговое окно с вопросом-сообщением, запрашивающее ввод от пользователя. Возвращает входные данные в виде строки. Компонент определяет фрейм, в котором отображается диалоговое окно; если ноль, или если parentComponent не имеет Frame, используется Frame по умолчанию.

Component, Object, Object (returns String) - То же, что и выше. Единственное отличие состоит в том, что поле ввода имеет начальное значение, установленное с помощью последнего параметра Object.

Component, Object, String, int (returns String) - показывает диалог, запрашивающий ввод от пользователя. Диалог имеет заголовок, установленный с помощью параметра String, и MessageType, заданный с помощью параметра int. Различные типы сообщений дляJOptionPane:

  • СООБЩЕНИЕ ОБ ОШИБКЕ

  • INFORMATION_MESSAGE

  • ПРЕДУПРЕЖДЕНИЕ

  • QUESTION_MESSAGE

  • PLAIN_MESSAGE

Component, Object, String, int, Icon, Object[], Object (returns Object) - Предлагает пользователю ввести данные в диалоговом окне блокировки, в котором можно указать начальный выбор, возможные варианты выбора и все другие параметры. Значок (если не ноль) отображается внутри диалогового окна и переопределяет значок MessageType по умолчанию.

1. Объект -The simplest way to get user input

Пример диалогового окна с вопросом-сообщением, которое вводит пользователь какString:

SimpleInputDialog1.java

package com.example.inputDialog;

import javax.swing.JOptionPane;

public class SimpleInputDialog1 {

    public static void main(String[] args){

        String m = JOptionPane.showInputDialog("Anyone there?");
        System.out.println(m);

    }

}

Выход:

swing-showinputdialog-3a

Когда вы вводите «Hellooooo !!!!» в поле ввода и нажимаете «OK»

Hellooooo!!!!

2. Объект и объект -Setting an initial value over the input

Пример диалога с вопросом-сообщением с начальным значением, которое вводится пользователем какString:

SimpleInputDialog2.java

package com.example.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);

    }

}

Выход:

swing-showinputdialog-3b

3. Компонент и объект -Setting the dialog in a parent Component

Если мы установимComponent равным нулю, результат будет таким же, как и с номером 1. В этом примере мы создадимJFrame, чтобы вставить наш диалог. Рамка закрывается, если пользователь не введет что-то в поле:

InputDialogInFrame.java

package com.example.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();
        }

    }

}

Выход:

swing-showinputdialog-3c

4. Компонент, объект и объект -Setting the dialog in a parent Component with an initial value

Если мы установимComponent равным нулю, результат будет таким же, как и с номером 2. Для этого примера мы немного изменим код с номера 3:

InputDialogInFrame.java

package com.example.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();
        }

    }

}

Выход:

swing-showinputdialog-3d

5. Компонент, объект, строка и целое число -Let us give our input dialog a title and choose the MessageType

Пример информационного сообщения с использованием значка по умолчанию черезJOptionPane.INFORMATION_MESSAGE:

SimpleInputDialog5.java

package com.example.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);

    }

}

Выход:

swing-showinputdialog-3e

6. Компонент, Объект, Строка, int, Значок, Объект [] и Объект -Input dialog with predefined options

6.1 In this example we provide the user with a set of options to choose from. Различные параметры отображаются в виде раскрывающегося меню с выбранным начальным значением:

InputDialog6a.java

package com.example.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);

    }

}

Выход:

swing-showinputdialog-3f

Когда вы выбираете опцию «Я обожаю черепах» и нажимаете «ОК»

I adore turtles

6.2 An example using array of Integers:

InputDialog6b.java

package com.example.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);

    }

}

Выход:

swing-showinputdialog-3g

6.3 An example where we take advantage of the dynamics the Object array and the Object return type of the method:

InputDialog6c.java

package com.example.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!");
        }

    }

}

Выход:

swing-showinputdialog-3h

Когда выбрано «2» и пользователь нажимает «ОК»:

You picked an Integer!

Когда выбрано «Нет» и пользователь нажимает «ОК»:

You picked a String!

Когда выбран «5.6» и пользователь нажимает «ОК»:

You picked a Double!

Когда выбрано «true» и пользователь нажимает «OK»:

You picked a Boolean!

7. Более сложный пример

Во всех предыдущих примерахString использовался вместоObject; в этом примере мы будем использоватьJPanel вместоObject. JPanel настраивается, и к нему добавляетсяJLabel. Мы также манипулируем размеромOptionPane, используя вызовUIManager.

InputDialogPanel.java

package com.example.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!");
        }

    }

}

Выход:

swing-showinputdialog-3i