我使用Java GUI和Swing库制作了一个简单的程序。用户输入" JUMP"在文本框和按钮排序"跳转"起来并回到原来的位置。问题是,即使输入正确,它也会交替显示输入并显示正确的输出。这个代码......
import javax.swing.*;
public class Jump_Button extends Thread
{
JFrame w=new JFrame();
JButton b=new JButton();
JTextField t=new JTextField();
int j=250;
Jump_Button()
{
w.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
w.setLayout(null);
w.setSize(500, 500);
w.setVisible(true);
w.add(t);
w.add(b);
b.setBounds(j, 250, 50,50);
t.setBounds(400,400,50,50);
}
public void run()
{
String s="";
t.setText("");
while(true)
{
try
{
s=t.getText();
}
catch(Exception e){}
try{sleep(1000);}catch(Exception e){}
if(s.equals(""))
{
j=250;
b.setBounds(250, j, 50,50);
try{sleep(100);}catch(Exception e){}
}
else if(s.equals("JUMP"))
{
b.setBounds(250, j-150, 50,50);
try{sleep(1000);}catch(Exception e){}
b.setBounds(250, j, 50,50);
t.setText("ABC");
try{sleep(1000);}catch(Exception e){}
t.setText("");
}
else
{
t.setText("");
}
}
}
public static void main(String args[])
{
new Jump_Button().start();
}
}
答案 0 :(得分:2)
您正在使用单独的线程来评估TextField的内容。 因此,当您键入JUMP时出现问题,但这可能是因为您的线程绝对没有处于预期的执行阶段(这是由于任务调度)
您应该获得一些关于Java中的Listeners的文档。 Listener概念可能更接近您正在寻找的行为。
这完全取决于确切的预期行为。 即。我想你想在每次TextField包含JUMP时执行“跳转”,无论是什么,没有等待等等......一旦跳过,清除文本字段。
答案 1 :(得分:0)
问题是它交替接受输入并显示 即使输入正确,也能正确输出。
它交替工作,因为您正在将文本重置为""在文本字段中。
从else if
的{{1}}块中删除以下两个语句。
JUMP