单击按钮时为什么此程序不循环?

时间:2016-10-28 11:15:59

标签: java android loops

我在尝试循环我已开发的程序的一部分时遇到问题。有9个不同颜色的随机字符串,以及相应字符串的9种随机颜色。例如红色"黄色"可能会显示。我有9种颜色中每种颜色的按钮,每次按下字符串所代表的颜色按钮时,用户就会得到一个点数。我知道得分工作得很好,我已经测试了,并且在紧迫的时候获得了一分。我的问题是,一旦按下彩色按钮,我打算输出一个新的随机颜色的随机字符串。这不会发生,屏幕上会保留相同颜色的相同字符串。以下是相关代码:

我想在用户点击任何按钮时循环,无论是对还是错。提前感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

if (true) {

这完全没用。它什么都不做。 true始终等于true,因此这绝不会影响您的计划。如果完全优化,我不会感到惊讶。

您可能打算写

while (true) {

但是,既然你设法混淆了ifwhile(假设这就是问题所在),我强烈建议你退后一步,先复习一下基础知识,然后再继续讨论。确保您确切了解ifwhile(至少)是做什么的。

答案 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,所以可能会有一些拼写错误。