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:
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:
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:
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:
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:
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:
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:
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:
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: