取消按钮上的JOptionPane操作

时间:2014-08-21 20:21:14

标签: java string swing comparison joptionpane

我正在尝试编译的代码:

import javax.swing.JOptionPane;

public class Comienzo
{

    public static void main()
    {
        String nombrepersonaje = JOptionPane.showInputDialog("Introduce el nombre de tu personaje");

        if (JOptionPane.OK_CANCEL_OPTION == JOptionPane.CANCEL_OPTION)
            Principal.main(new String[] {});
        else
            //do other stuff

        if (nombrepersonaje.equals(""))
            Comienzo.main();
        else
            JOptionPane.showMessageDialog(null, "¡Bienvenido... " + nombrepersonaje + "!");
    }
}

这个类和方法是从另一个类调用的(我在本网站上学到的东西),现在我想问为什么Eclipse告诉我我正在比较相同的表达式,我想要做的是:if我按下取消按钮,返回Principal#main课程,我也尝试了

if (JOptionPane.OK_CANCEL_OPTION == JOptionPane.CANCEL_OPTION)
{
    Comienzo.main();
}

但即使我在InputDialog中输入内容,循环程序,我得到的东西似乎是在我写完之后的任何东西都是“死代码”,我不明白为什么。

我甚至试图删除else之后的括号并放入

else if {nombrepersonaje.equals("")) 
    Comienzo.main();
else 
    JOptionPane.showMessageDialog(null, "¡Bienvenido... " + nombrepersonaje + "!");

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

您必须将方法showInputDialog的返回值(在本例中为String)与null进行比较(showInputDialog返回null ,如果单击Cancel按钮):

public class Class
{
    public static void main(String[] args)
    {
        String result = JOptionPane.showInputDialog(null, "Are you serious?");

        if(result == null)
            System.out.println("YOU ARE DEFINETELY SERIOUS!");
    }
}

答案 1 :(得分:0)

你可能想要的是这样的:

import javax.swing.JOptionPane;

public class Comienzo {    
    public static void main(String[] args) {
        String inputValue = JOptionPane.showInputDialog("Please input a value");

        if (inputValue == null) {
            System.out.println("CANCEL");
        } else if (inputValue.equals("")) {
            Comienzo.main(args);
        } else {
            JOptionPane.showMessageDialog(null, "¡Bienvenido... " + inputValue + "!");
        }
    }
}

你在JOptionPane.OK_CANCEL_OPTION == JOptionPane.CANCEL_OPTION所做的是将两个常量相互比较,恰好具有相同的值。由于常量不能根据您的输入进行更改,因此您的代码无法对输入做出反应。