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)
while(true)
Run Code Online (Sandbox Code Playgroud)
那就是问题所在.不要阻止EDT(事件调度线程).当发生这种情况时,GUI将"冻结".有关详细信息和修复,请参阅Swing中的并发.