0

我有一个开/关按钮,我想更改字符串的值,如果字符串包含randomnessOn它将更改为randomnessOff,反之亦然。我不能只覆盖字符串,因为它不仅包含开/关按钮的状态值。我试过这段代码。

if(command.equals(randFor) | command.equals(randBack) | command.equals(randButton)){
        if(option.contains("randomnessOf")){
            randomness = true;
            randState = "ON";
            randStateX = 975;
            randStateY = 245;
            option = option.replace("randomnesOff", "randomnessOn");
        }
        if(option.contains("randomnessOn")){
            randomness = false;
            randState = "OFF";
            randStateX = 970;
            randStateY = 245;
            option = option.replace("randomnesOn", "randomnessOff");
        }
        loadOptions();
    }

它将更改randState字符串的文本并更改文本的位置,但不会替换option字符串中的单词,那么我将如何替换字符串中的单词?

4

3 回答 3

3

它将更改 randState 字符串的文本并更改文本的位置,但它不会替换选项字符串中的单词,那么我将如何替换字符串中的单词?

Java 字符串是不可变的。你不能改变它们。

这一行:

    option = option.replace("randomnesOn", "randomnessOff");

option正在根据替换相关字符的原始值创建一个新字符串。您现在必须使用这个新字符串来更新 GUI。例如,您可能需要调用setText(option)一些 Swing 按钮或标签对象。

请记住,分配一个新值option只会影响该局部变量。它肯定不会也不会影响您的 GUI……除非您采取一些措施来实现这一点。

于 2013-05-25T07:33:05.653 回答
1

您通过名为“option”的变量更改值引用。可能,您有一些 GUI 元素(例如 JButton)将其“文本”设置为option. 如果您需要更新可视元素(例如 JButton),您必须明确地进行,例如调用myButton.setText(option)(在将新值分配给 variable 之后option)。

于 2013-05-25T07:38:24.240 回答
0
    if(option.contains("randomnessOf")){
               //....
                option = option.replace("randomnessOff", "randomnessOn");// 
              //randomnessOf with two `s`
            }
            if(option.contains("randomnessOn")){
               //....
                option = option.replace("randomnessOn", "randomnessOff");
               //the same as firtst you forgot one 's'
}
于 2013-05-25T08:27:09.683 回答