tf
是JTextField
。
预期的执行流程:
first loop
的{{1}}中输入内容之前,控件不应移出JTextField
。第二个tf
只应在控件移出第一个之后运行。
while loop
问题:
while(true)
{
if((!tf.getText().equals("")))
{
p.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
String name=tf.getText();
System.out.println("Hello "+name+",\nWelcome to Guess the number Game");
}
});
break;
}
else if (tf.getText().equals(""))
{
p.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
p.setSelected(false);
}
});
continue;
}
} //while end
while(true)
{ st="game on";
System.out.println(st);
if(!st.equals(""))
{
gamer3 game1=new gamer3();
Thread nt =new Thread(game1);
nt.start();
break;
}
首先被执行。 while loop
已打印出来。game on
中输入内容,第二个tf
内的代码就会被执行。为什么一旦我在while loop
中输入内容,控件就会移动到第二个while loop
?第二个tf
甚至不依赖于while loop
。tf
输入内容后,我甚至不需要按enter
。在按tf
之前如何识别输入的值?主要问题:
enter
语句。为什么这里不遵循这个?break
。答案 0 :(得分:1)
如果没有可运行的示例,很难确定代码的上下文代码段可能会或可能不会执行什么
我“怀疑”你有一个不受控制的线程,它正在检查触发你没有准备好的动作的字段状态 - Swing不是线程安全的,你不应该监视或修改外部的状态在EDT的上下文中,请记住,Swing(与大多数GUI一样)是事件驱动的。
通常情况下,您可以使用DocumentListener
获取实时反馈,也可以使用ActionListener
,这样当用户按下 Enter 按钮(或按下其他按钮)时,您就会收到通知在UI上)