当前位置: 首页 > 知识库问答 >
问题:

JOptionPane处理确定、取消和x按钮

傅阿苏
2023-03-14

我的JOptionPane有一个问题,如果我不输入任何东西,无论我按什么(ok,cancel或x按钮(JOptionPane的右上角按钮)),它都会提示我,直到我输入一个正值。但是我只希望当我按下ok时出现提示。

如果我点击取消或x按钮(JOptionPane的右上角按钮),它将关闭JOptionPane

我怎么能这样呢?

import javax.swing.JOptionPane;

public class OptionPane {
    public static void main(final String[] args) {
        int value = 0;
        boolean isPositive = false , isNumeric = true;
        do {
            try {
                value = Integer.parseInt(JOptionPane.showInputDialog(null,
                    "Enter value?", null));
            } catch (NumberFormatException e) {
                System.out.println("*** Please enter an integer ***");
                isNumeric = false;
            }

             if(isNumeric) {
                if(value <= 0) {
                    System.out.println("value cannot be 0 or negative");
                }

                else {
                    System.out.println("value is positive");
                    isPositive = true;
                }
            }
        }while(!isPositive);
    }
}

共有3个答案

微生高谊
2023-03-14

只需将代码移到<code>try

示例代码:

public static void main(final String[] args) {
    int value = 0;
    while (true) {
        try {
            value = Integer.parseInt(JOptionPane.showInputDialog(null, "Enter value?", null));

            if (value <= 0) {
                System.out.println("value cannot be 0 or negative");
            } else {
                System.out.println("value is positive");
                break;
            }
        } catch (NumberFormatException e) {
            System.out.println("*** Please enter an integer ***");
        }
    }
}
仲承福
2023-03-14
JoptionPane#showInputDialog returns user's input, or null meaning the user canceled the input.

所以不是直接解析返回值。首先检查它是否为空(用户已取消),如果不为空则什么也不做,然后解析整数值

叶声
2023-03-14

基本方法如下所示:

在@MadProgrammer评论后更新。

import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class DemoJOption {
    public static void main(String args[]) {
        int n = JOptionPane.showOptionDialog(new JFrame(), "Message", 
        "Title", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, 
        null, new Object[] {"Yes", "No"}, JOptionPane.YES_OPTION);

        if (n == JOptionPane.YES_OPTION) {
            System.out.println("Yes");
        } else if (n == JOptionPane.NO_OPTION) {
            System.out.println("No");
        } else if (n == JOptionPane.CLOSED_OPTION) {
            System.out.println("Closed by hitting the cross");
        }
    }
}
 类似资料:
  • 我创建了类型。当它打开它时,它会向我显示两个按钮:OK和Cancel。我想在按下取消按钮时处理该操作,但我不知道如何到达该操作。我怎么才能拿到?

  • 一个解决方案是(如果我读对了的话)添加一个任意的JPanel,在这个例子中是一个标签。我的问题是在消息窗口中需要一个JComboBox对象,并且(与解决coffee_table的问题相同)使用JComboBox似乎删除了取消按钮。如果我将YES_NO_CANCEL_OPTION替换为OK_CANCEL_OPTION或question_message并不重要。 对于JOptionPane家族,我仍然

  • 问题内容: Javascript确认弹出窗口,我想显示“是,否”按钮,而不是“确定”和“取消”。 我已经使用了以下vbscript代码: 这仅适用于IE,在FF和Chrome中,但无效。 是否有任何工作来实现此目的? 我也想更改弹出窗口的标题,如在IE中显示“ Windows Internet Explorer”,我想在这里显示我自己的应用程序名称。 问题答案: 不幸的是,没有跨浏览器的支持来打开

  • 问题内容: Javascript确认弹出窗口,我想显示“是,否”按钮,而不是“确定”和“取消”。 我已经使用了以下vbscript代码: 这仅适用于IE,在FF和Chrome中,但无效。 是否有任何工作来实现此目的? 我也想更改弹出窗口的标题,如在IE中显示“ Windows Internet Explorer”,我想在这里显示我自己的应用程序名称。 问题答案: 不幸的是,没有跨浏览器的支持来打开

  • 问题内容: 我试图获取传递给JOptionPane的自定义按钮返回的值。但是,我通过的按钮根本不返回任何值。仅当按下退出按钮时,才返回-1的值。我需要这样做,因为我正在更改启用或禁用的按钮的属性。我假设我需要按钮以某种方式将某些信息返回给JOptionPane。任何想法? Nb这与我以前的问题有关-JOptionPane灰色输出一个按钮 我尝试像您说的那样设置按钮的值,但是它们从不返回OK或CAN