变量没有从输入对话框中获取字符串

时间:2013-11-03 14:34:19

标签: java dialog null

我正在尝试使用方法charEdit获取对话框的输入,该方法应更改输入,但最后变量仍然等于null。

public String showInputDialog(String stringy)
{
    String input = JOptionPane.showInputDialog(this,stringy);
    if(input == null || input.isEmpty())
    {
        input = showInputDialog(stringy);
    }
    return input;
}

public void charEdit(Checkbox chara,String account,String password){
    chara.setLabel(showInputDialog("Character Name?"));
    account=(showInputDialog("Account Name?"));
    password=(showInputDialog("Account Password?"));
    chara.setEnabled(true);
}

public void menuItemSelected(MenuItem menuObj){
    if (menuObj==help){
        messageBox("Edit character info and then click the login button");
    }
    else if (menuObj==charOneEdit){
        charEdit(characterOne,charAArray[0],charPArray[0]);
    }
}

为什么变量characterOne不保留它的值?

1 个答案:

答案 0 :(得分:0)

你的问题是字符串是不可变的。所以调用这个方法:

public void charEdit(Checkbox chara,String account,String password){
    chara.setLabel(showInputDialog("Character Name?"));
    account=(showInputDialog("Account Name?"));
    password=(showInputDialog("Account Password?"));
    chara.setEnabled(true);
}

不会更改传递给方法的参数引用的字符串。

换句话说,称之为:

String acct = "";
String password = ""; // passwords should not be held in Strings by the way
charEdit(something, acct, password);

不会更改帐户或密码。

一种解决方案是使用类字段,并更改它们。另一种方法是传入对具有帐户和密码字段的对象的引用,然后更改其字段的状态。