Java Swing – JOptionPane showConfirmDialog示例

这是对JOptionPane类的showConfirmDialog()方法的回顾。 这种方法是通过询问一个确认问题(例如yes / no / cancel)来获得用户输入的快速简便的方法。 可以使用以下参数组合来调用showConfirmDialog()

Component, Object
Component, Object, String, int
Component, Object, String, int, int
Component, Object, String, int, int, Icon
  1. Component –第一个参数是Component,它确定显示对话框的框架; 如果为null,或者parentComponent没有框架,则使用默认框架。
  2. 对象–第二个参数可以是任何对象。 (在某些旧版本的Java中,直接使用原始类型时,您可能会遇到编译器错误)
  3. 字符串–第三个参数是作为ConfirmDialog窗口的标题放置的字符串。
  4. int –字符串之后的int是OptionTypeJOptionPane的不同OptionTypes是:
    • DEFAULT_OPTION
    • YES_NO_OPTION
    • YES_NO_CANCEL_OPTION
    • OK_CANCEL_OPTION
  5. int –下一个int是MessageTypeJOptionPane的不同MessageTypes是:
    • 错误信息
    • INFORMATION_MESSAGE
    • 警告信息
    • QUESTION_MESSAGE
    • PLAIN_MESSAGE
  6. Icon –最后一个参数是显示在对话框中的Icon ,它将覆盖默认的MessageType图标。

1.组件与对象

获取用户输入的最简单方法。 showConfirmDialog()将弹出一个对话框,其中包含选项Yes,No和Cancel,标题为“ Select a Option”:

ConfirmDialog1.java
package com.mkyong.confirmDialog;

import javax.swing.JOptionPane;

public class ConfirmDialog1 {

    public static void main(String[] args) {

        int input = JOptionPane.showConfirmDialog(null, "Do you like bacon?");
        // 0=yes, 1=no, 2=cancel
        System.out.println(input);

    }
}

输出:

swing-comfirm-dialog-2a

2.组件,对象,字符串和整数

在确认对话框中添加更多信息。 在此示例中,我们选择对话框的标题以及optionTypeDEFAULT_OPTION只有一个“确定”按钮。 确认对话框的这种形式等效于简单的showMessageDialog()同时使我们能够获取用户输入。

ConfirmDialog2a.java
package com.mkyong.confirmDialog;

import javax.swing.JOptionPane;

public class ConfirmDialog2a {

    public static void main(String[] args) {

        int input = JOptionPane.showConfirmDialog(null, 
                "Click ok if you are ok", "Be ok!", JOptionPane.DEFAULT_OPTION);
        // 0=ok
        System.out.println(input);

    }
}

输出:

swing-comfirm-dialog-2b

使用YES_NO_CANCEL_OPTION的另一个简单示例:

ConfirmDialog2b.java
package com.mkyong.confirmDialog;

import javax.swing.JOptionPane;

public class ConfirmDialog2b {

    public static void main(String[] args) {

        int input = JOptionPane.showConfirmDialog(null, 
                "Do you want to proceed?", "Select an Option...",JOptionPane.YES_NO_CANCEL_OPTION);

	// 0=yes, 1=no, 2=cancel
	System.out.println(input);

    }
}

输出:

swing-comfirm-dialog-2c

3.组件,对象,字符串,整数和整数

给您的确认对话框带有错误图标:

ConfirmDialog3.java
package com.mkyong.confirmDialog;

import javax.swing.JOptionPane;

public class ConfirmDialog3 {

    public static void main(String[] args) {

        int input = JOptionPane.showConfirmDialog(null, "Do you want to proceed?", "Select an Option...",
				JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.ERROR_MESSAGE);
		
	// 0=yes, 1=no, 2=cancel
	System.out.println(input);

    }
}

输出:

swing-comfirm-dialog-2d

4.组件,对象,字符串,整数,整数和图标

将确认对话框设为“更漂亮”,并从目录中检索Icon示例:

ConfirmDialog4a.java
package com.mkyong.confirmDialog;

import javax.swing.ImageIcon;
import javax.swing.JOptionPane;

public class ConfirmDialog4a {

    public static void main(String[] args) {

        ImageIcon icon = new ImageIcon("src/images/turtle64.png");
	int input = JOptionPane.showConfirmDialog(null, "Do you like turtles?", "Be honest...",
			JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, icon);

        // 0=yes, 1=no, 2=cancel
	System.out.println(input);

    }
}

输出:

swing-comfirm-dialog-2e

Component设置为frame示例:

ConfirmDialogInFrame.java
package com.mkyong.confirmDialog;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import java.awt.Color;

public class ConfirmDialogInFrame extends JFrame{

    public ConfirmDialogInFrame() {
        getContentPane().setBackground(Color.DARK_GRAY);
        setTitle("Confirm Dialog in Frame");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
        setResizable(false);
        setSize(400, 300);
        getContentPane().setLayout(null);
    }

    public static void main(String[] args){
        ImageIcon icon = new ImageIcon("src/images/turtle64.png");
        int input = JOptionPane.showConfirmDialog(new ConfirmDialogInFrame(), 
                "I appear as part of the frame!!", "Customized Dialog", 
                JOptionPane.OK_CANCEL_OPTION, JOptionPane.INFORMATION_MESSAGE, icon);

        // 0=ok, 2=cancel
        System.out.println(input);
    }
}

输出:

swing-comfirm-dialog-2f

5.一个更高级的例子

在此示例中,我们将JPanel作为Object参数传递。 JPanel是自定义的,并且添加了JLabel 。 我们还使用对UIManager的调用来操纵OptionPane的大小。

ConfirmDialogPanel.java
package com.mkyong.messageDialog;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;

import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.UIManager;

public class ConfirmDialogPanel {

	public static void main(String[] args) {

		ImageIcon icon = new ImageIcon("src/images/lock64.png");

		JPanel panel = new JPanel();
		panel.setBackground(new Color(102, 205, 170));
		panel.setSize(new Dimension(200, 64));
		panel.setLayout(null);

		JLabel label1 = new JLabel("This file requires administrator rights.");
		label1.setVerticalAlignment(SwingConstants.BOTTOM);
		label1.setBounds(0, 0, 200, 32);
		label1.setFont(new Font("Arial", Font.BOLD, 10));
		label1.setHorizontalAlignment(SwingConstants.CENTER);
		panel.add(label1);

		JLabel label2 = new JLabel("Are you sure you want to continue?");
		label2.setVerticalAlignment(SwingConstants.TOP);
		label2.setHorizontalAlignment(SwingConstants.CENTER);
		label2.setFont(new Font("Arial", Font.BOLD, 10));
		label2.setBounds(0, 32, 200, 32);
		panel.add(label2);

		UIManager.put("OptionPane.minimumSize", new Dimension(300, 120));
		int input = JOptionPane.showConfirmDialog(null, panel, "Admin Rights Confirmation",
				JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE, icon);

		// 0=yes, 1=no, 2=cancel
		System.out.println(input);

	}

}

输出:

swing-comfirm-dialog-2g

参考文献

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

翻译自: https://mkyong.com/swing/java-swing-how-to-make-a-confirmation-dialog/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值