我在尝试循环我已开发的程序的一部分时遇到问题。有9个不同颜色的随机字符串,以及相应字符串的9种随机颜色。例如红色"黄色"可能会显示。我有9种颜色中每种颜色的按钮,每次按下字符串所代表的颜色按钮时,用户就会得到一个点数。我知道得分工作得很好,我已经测试了,并且在紧迫的时候获得了一分。我的问题是,一旦按下彩色按钮,我打算输出一个新的随机颜色的随机字符串。这不会发生,屏幕上会保留相同颜色的相同字符串。以下是相关代码:
我想在用户点击任何按钮时循环,无论是对还是错。提前感谢您的帮助。
答案 0 :(得分:4)
if (true) {
这完全没用。它什么都不做。 true
始终等于true
,因此这绝不会影响您的计划。如果完全优化,我不会感到惊讶。
您可能打算写
while (true) {
但是,既然你设法混淆了if
和while
(假设这就是问题所在),我强烈建议你退后一步,先复习一下基础知识,然后再继续讨论。确保您确切了解if
和while
(至少)是做什么的。
答案 1 :(得分:1)
你的问题很混乱,但我想我明白你想做什么。
如果我找对你。
- 你有个别不同颜色的按钮
- 每个按钮包含一个字符串,该字符串也以随机颜色着色
你的问题:
- 如果用户单击与其文本颜色相对应的颜色的按钮,则要随机更改其两种颜色。然后 不会发生。
- 你似乎也误解了GUI的基础知识,没有必要将你的代码包装在一个inifite循环中。 Gui在一个单独的线程(Event Dispacher Thread)中运行。它只会在您关闭它时终止。以System.exit(0)为例。 注意:更好的方法是设置defaultCloseOperation。
现在你需要做什么。让我们将此ActionListener作为示例:
purpleButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (colorString[decider] == colorString[5]) {
score++;
}
}
});
没有机制可以改变你的"字的颜色"完全属性。 你想改变你的"单词"颜色:
purpleButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (colorString[decider] == colorString[5]) {
score++;
changeTextColor();
}
}
});
private void changeTextColor(){
int[] androidColors = getResources().getIntArray(R.array.androidcolors);
int randomAndroidColor = androidColors[new Random().nextInt(androidColors.length)];
this.word.setTextColor(randomAndroidColor);
}
我希望通过提供这段代码,你有一个global attribute word
。如果要在每个Button上显示一个单词,请创建一个新类,该类使用全局单词属性和上述方法扩展JButton。类似的东西:
class ButtonWithLabel extends JButton{
public ButtonWithLabel(ActionListener onClickListener, Color color, String text){
this.setName(text);
this.setForegroundColor(color)
this.addActionListener(onClickListener);
}
public void changeLabel(Color color, String text){
this.setName(text);
this.setForegroundColor(color)
}
}
我手头没有IDE,所以可能会有一些拼写错误。