更改文本框架颜色 - 应用程序。很冷

时间:2015-02-03 21:05:33

标签: java swing jframe jtextfield event-dispatch-thread

好的,所以我们的任务是创建一个猜测游戏,用户输入一个数字,文本前景应该变为红色,如果它太高,蓝色,如果它太低,或绿色,如果它是确切的。

我们的老师发布的代码就是这样做的,而且非常简单,我能理解它。问题是,当我尝试重新格式化它以获得我需要的JFrame时,我得到了可以输入它的文本字段,但是当我点击提交它就像冻结一样。我想它与动作监听器的编写方式有关,但我不确定。

任何帮助都会受到赞赏。

这是我的代码,经过编辑,只显示特定部分"

 button.addActionListener(
        new ActionListener() 
        {
            @Override
            public void actionPerformed(ActionEvent arg0) 
            {


                userInput = keyboard.next();

                if(Integer.parseInt(userInput) > randomNumber)
                    {
                        tf.setForeground(Color.red);;
                    }
                    else if(Integer.parseInt(userInput) < randomNumber)
                    {
                        tf.setForeground(Color.blue);
                    }
                    else if(Integer.parseInt(userInput) == randomNumber)
                    {
                        tf.setForeground(Color.green);
                    }

                }
            }
           );
    }

1 个答案:

答案 0 :(得分:5)

while(true)

这就是问题所在。不要阻止EDT(Event Dispatch Thread)。 GUI将会冻结&#39;当发生这种情况时有关详细信息和修复,请参阅Concurrency in Swing