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

Som*_*ent 1 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);
                    }

                }
            }
           );
    }
Run Code Online (Sandbox Code Playgroud)

And*_*son 5

while(true)
Run Code Online (Sandbox Code Playgroud)

那就是问题所在.不要阻止EDT(事件调度线程).当发生这种情况时,GUI将"冻结".有关详细信息和修复,请参阅Swing中的并发.