Java Swing - JOptionPane showInputDialog - Beispiel

Java Swing - JOptionPane showInputDialog Beispiel

Dies ist eine Überprüfung der MethodeshowInputDialog()der KlasseJOptionPane. Mit dieser Methode können wir den Benutzer zur Eingabe auffordern, während wir unser Dialogfenster anpassen. showConfirmDialog gibt entwederString oderObject zurück und kann mit den folgenden Parameterkombinationen aufgerufen werden:

Object (returns String) - Zeigt einen Frage-Nachricht-Dialog an, in dem der Benutzer zur Eingabe aufgefordert wird.

Object, Object (returns String) - Zeigt einen Frage-Nachricht-Dialog an, in dem der Benutzer eine Eingabe mit dem initialisierten Eingabewert anfordert.

Component, Object (returns String) - Zeigt einen Frage-Nachricht-Dialog an, in dem der Benutzer zur Eingabe aufgefordert wird. Gibt die Eingabe als String zurück. Die Komponente bestimmt den Frame, in dem der Dialog angezeigt wird. Wenn null oder die parentComponent keinen Frame hat, wird ein Standard-Frame verwendet.

Component, Object, Object (returns String) - Wie oben. Der einzige Unterschied besteht darin, dass das Eingabefeld einen Anfangswert hat, der über den letzten Object-Parameter festgelegt wurde.

Component, Object, String, int (returns String) - Zeigt einen Dialog an, in dem der Benutzer zur Eingabe aufgefordert wird. Das Dialogfeld verfügt über einen Titel, der über den Parameter String festgelegt wird, und einen Nachrichtentyp, der über den Parameter int festgelegt wird. Die verschiedenen MessageTypes fürJOptionPane sind:

  • FEHLERMELDUNG

  • INFORMATION_MESSAGE

  • WARNMELDUNG

  • QUESTION_MESSAGE

  • PLAIN_MESSAGE

Component, Object, String, int, Icon, Object[], Object (returns Object) - Fordert den Benutzer zur Eingabe in einem Blockierungsdialog auf, in dem die anfängliche Auswahl, mögliche Auswahlen und alle anderen Optionen angegeben werden können. Das Symbol (falls nicht null) wird im Dialogfeld angezeigt und überschreibt das standardmäßige MessageType-Symbol.

1. Objekt -The simplest way to get user input

Beispiel eines Frage-Nachrichtendialogs, der Benutzereingaben alsString erhält:

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);

    }

}

Ausgabe:

swing-showinputdialog-3a

Wenn Sie "Hellooooo !!!!" in das Eingabefeld eingeben und auf "OK" klicken

Hellooooo!!!!

2. Objekt & Objekt -Setting an initial value over the input

Beispiel eines Frage-Nachricht-Dialogs mit einem Anfangswert, der Benutzereingaben alsString erhält:

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);

    }

}

Ausgabe:

swing-showinputdialog-3b

3. Komponente & Objekt -Setting the dialog in a parent Component

Wenn wirComponent auf null setzen, ist das Ergebnis mit Nummer 1 dasselbe. In diesem Beispiel erstellen wirJFrame, um unseren Dialog einzufügen. Der Rahmen wird geschlossen, es sei denn, der Benutzer gibt etwas in das Feld ein:

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();
        }

    }

}

Ausgabe:

swing-showinputdialog-3c

4. Komponente, Objekt & Objekt -Setting the dialog in a parent Component with an initial value

Wenn wirComponent auf null setzen, ist das Ergebnis mit Nummer 2 dasselbe. In diesem Beispiel werden wir den Code von Nummer 3 geringfügig ändern:

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();
        }

    }

}

Ausgabe:

swing-showinputdialog-3d

5. Komponente, Objekt, Zeichenfolge & int -Let us give our input dialog a title and choose the MessageType

Ein Beispiel für eine Informationsnachricht mit dem Standardsymbol bisJOptionPane.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);

    }

}

Ausgabe:

swing-showinputdialog-3e

6. Komponente, Objekt, Zeichenfolge, int, Symbol, Objekt [] & Objekt -Input dialog with predefined options

6.1 In this example we provide the user with a set of options to choose from. Die verschiedenen Optionen werden in Form eines Dropdown-Menüs mit einem ausgewählten Anfangswert angezeigt:

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);

    }

}

Ausgabe:

swing-showinputdialog-3f

Wenn Sie die Option "Ich mag Schildkröten" auswählen und auf "OK" klicken

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);

    }

}

Ausgabe:

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!");
        }

    }

}

Ausgabe:

swing-showinputdialog-3h

Wenn "2" ausgewählt ist und der Benutzer auf "OK" klickt:

You picked an Integer!

Wenn "Nein" ausgewählt ist und der Benutzer auf "OK" klickt:

You picked a String!

Wenn "5.6" ausgewählt ist und der Benutzer auf "OK" klickt:

You picked a Double!

Wenn "true" ausgewählt ist und der Benutzer auf "OK" klickt:

You picked a Boolean!

7. Ein fortgeschritteneres Beispiel

In allen vorhergehenden Beispielen wurde einString anstelle vonObject verwendet; In diesem Beispiel verwenden wirJPanel anstelle vonObject. DasJPanel wird angepasst und mit einemJLabel versehen. Wir manipulieren auch die Größe derOptionPane, indem wirUIManager aufrufen.

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!");
        }

    }

}

Ausgabe:

swing-showinputdialog-3i