Java Swing – JOptionPane showInputDialog示例

这是JOptionPane类的showInputDialog()方法的回顾。 使用这种方法,我们可以在自定义对话框窗口时提示用户输入。 showConfirmDialog返回StringObject ,可以使用以下参数组合调用:

  • Object (returns String) –显示一个问题消息对话框,要求用户输入。
  • Object, Object (returns String) –显示一个问题消息对话框,要求用户输入已初始化的输入值。
  • Component, Object (returns String) –显示一个问题消息对话框,要求用户输入。 以String形式返回输入。 组件确定显示对话框的框架。 如果为null,或者parentComponent没有框架,则使用默认框架。
  • Component, Object, Object (returns String) –与上面相同。 唯一的区别是输入字段具有通过最后一个Object参数设置的初始值。
  • Component, Object, String, int (returns String) –显示一个对话框,要求用户输入。 该对话框具有通过String参数设置的标题和通过int参数设置的MessageType。 JOptionPane的不同MessageType是:
    • 错误信息
    • INFORMATION_MESSAGE
    • 警告信息
    • QUESTION_MESSAGE
    • PLAIN_MESSAGE
  • Component, Object, String, int, Icon, Object[], Object (returns Object) –提示用户在阻止对话框中输入内容,在该对话框中可以指定初始选择,可能的选择以及所有其他选项。 图标(如果不为null)显示在对话框中,并覆盖默认的MessageType图标。

1.对象– 获得用户输入的最简单方法

以用户输入为String的问题消息对话框的示例:

SimpleInputDialog1.java
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);

    }

}

输出:

swing-showinputdialog-3a

当您键入“ Hellooooo !!!!” 在输入字段中,然后单击“确定”

Hellooooo!!!!

2.对象与对象– 在输入上设置初始值

带有初始值的问题消息对话框的示例,该初始值使用户输入为String

SimpleInputDialog2.java
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);

    }

}

输出:

swing-showinputdialog-3b

3.组件和对象– 在父组件中设置对话框

如果将Component设置为null,则结果将与数字1相同。对于本示例,我们将创建一个JFrame来放置对话框。除非用户在字段中键入某些内容,否则该框架将关闭:

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

    }

}

输出:

swing-showinputdialog-3c

4.组件,对象和对象– 使用初始值在父组件中设置对话框

如果将Component设置为null,则结果将与数字2相同。对于本示例,我们将稍微更改数字3的代码:

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

    }

}

输出:

swing-showinputdialog-3d

5. Component,Object,String和int – 让我们给输入对话框一个标题并选择MessageType

使用通过JOptionPane.INFORMATION_MESSAGE使用默认图标的信息消息的示例:

SimpleInputDialog5.java
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);

    }

}

输出:

swing-showinputdialog-3e

6.组件,对象,字符串,整数,图标,对象[]和对象– 具有预定义选项的输入对话框

6.1在此示例中,我们为用户提供了一组选项供您选择。 不同的选项以具有选定初始值的下拉菜单形式出现:

InputDialog6a.java
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);

    }

}

输出:

swing-showinputdialog-3f

当您选择“我崇拜海龟”选项并单击“确定”时

I adore turtles

6.2使用整数数组的示例:

InputDialog6b.java
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);

    }

}

输出:

swing-showinputdialog-3g

6.3一个利用动态特性的例子,该方法的Object array和对象返回类型为:

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

    }

}

输出:

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代替ObjectJPanel是自定义的,并且添加了JLabel 。 我们还使用对UIManager的调用来操纵OptionPane的大小。

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

    }

}

输出:

swing-showinputdialog-3i

参考文献

  1. 如何制作对话框
  2. JOption窗格类– Java 8 API
  3. 常量字段值

翻译自: https://mkyong.com/swing/java-swing-joptionpane-showinputdialog-example/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值