Java文本字段有时只是输入

时间:2017-06-22 15:20:07

标签: java swing

我使用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();
}

}

2 个答案:

答案 0 :(得分:2)

您正在使用单独的线程来评估TextField的内容。 因此,当您键入JUMP时出现问题,但这可能是因为您的线程绝对没有处于预期的执行阶段(这是由于任务调度)

您应该获得一些关于Java中的Listeners的文档。 Listener概念可能更接近您正在寻找的行为。

这完全取决于确切的预期行为。 即。我想你想在每次TextField包含JUMP时执行“跳转”,无论是什么,没有等待等等......一旦跳过,清除文本字段。

答案 1 :(得分:0)

  

问题是它交替接受输入并显示   即使输入正确,也能正确输出。

它交替工作,因为您正在将文本重置为""在文本字段中。

else if的{​​{1}}块中删除以下两个语句。

JUMP