Java Swing – JOptionPane showInputDialog示例
这是JOptionPane
类的showInputDialog()
方法的回顾。 使用这种方法,我们可以在自定义对话框窗口时提示用户输入。 showConfirmDialog
返回String
或Object
,可以使用以下参数组合调用:
-
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
的问题消息对话框的示例:
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.对象与对象– 在输入上设置初始值
带有初始值的问题消息对话框的示例,该初始值使用户输入为String
:
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.组件和对象– 在父组件中设置对话框
如果将Component
设置为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.组件,对象和对象– 使用初始值在父组件中设置对话框
如果将Component
设置为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. Component,Object,String和int – 让我们给输入对话框一个标题并选择MessageType
使用通过JOptionPane.INFORMATION_MESSAGE
使用默认图标的信息消息的示例:
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.组件,对象,字符串,整数,图标,对象[]和对象– 具有预定义选项的输入对话框
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一个利用动态特性的例子,该方法的Object array
和对象返回类型为:
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”并且用户单击“ OK”时:
You picked a Boolean!
7.一个更高级的例子
在前面的所有示例中,都使用String
代替了Object
; 在此示例中,我们将使用JPanel
代替Object
。 JPanel
是自定义的,并且添加了JLabel
。 我们还使用对UIManager
的调用来操纵OptionPane
的大小。
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!");
}
}
}
输出:
参考文献
From: https://mkyong.com/swing/java-swing-joptionpane-showinputdialog-example/
推荐阅读
-
Java Swing – JOptionPane showInputDialog示例
-
Java Swing实现让窗体居中显示的方法示例
-
Java Swing组件文件选择器JFileChooser简单用法示例
-
java Swing JFrame框架类中setDefaultCloseOperation的参数含义与用法示例
-
Java Swing实现JTable检测单元格数据变更事件的方法示例
-
Java Swing中JList选择事件监听器ListSelectionListener用法示例
-
Java Swing中JDialog实现用户登陆UI示例
-
Java Swing中JTable渲染器与编辑器用法示例
-
Java Swing组件单选框JRadioButton用法示例
-
Java Swing组件复选框JCheckBox用法示例