我有一个开/关按钮,我想更改字符串的值,如果字符串包含randomnessOn
,它将更改为randomnessOff
,反之亦然。我不能只重写String,因为它不仅包含开/关按钮状态的值。我试过这段代码。
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
字符串中的单词,那么如何替换字符串中的单词呢?
答案 0 :(得分:3)
它将更改randState String的文本并更改文本的位置,但它不会替换选项String中的单词,那么我该如何替换String中的单词呢?
Java字符串是不可变的。你无法改变它们。
这一行:
option = option.replace("randomnesOn", "randomnessOff");
正在创建一个基于option
原始值的新String,并替换相关字符。您现在必须使用此新字符串来更新GUI。例如,您可能需要在某些Swing按钮或标签对象上调用setText(option)
。
请记住,为option
分配新值只会影响该局部变量。它当然不会也不会影响你的GUI ...除非你做某事来实现这一点。
答案 1 :(得分:1)
您可以通过名为“option”的变量更改值引用。
可能,您有一些GUI元素(例如JButton)将其“Text”设置为原始值option
。如果您需要更新视觉元素(例如JButton),则必须明确地进行更新,例如:调用myButton.setText(option)
(将新值分配给变量option
后)。
答案 2 :(得分: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'
}