带延迟的Java KeyListener

带延迟的Java KeyListener,java,delay,keylistener,Java,Delay,Keylistener,我需要帮助在使用JAVA实现的现有产品中实现新功能。新功能将允许用户在数据库中搜索项目,并在Jtable中显示它们。搜索条件将在文本框中键入,相关结果应相应地显示在表中。我可以很容易地创建一个“提交”按钮来提交搜索条件并获得结果。但我真正想要的是在textbox上实现一个keylistener,它将在提交查询之前等待大约2秒钟。例如,如果用户输入“D”并等待1秒,然后输入“O”,则查询提交将在输入“O”后2秒发生(每次击键时更新延迟时间)。可以在每个按键上尝试一个java.util.Timer,

我需要帮助在使用JAVA实现的现有产品中实现新功能。新功能将允许用户在数据库中搜索项目,并在Jtable中显示它们。搜索条件将在文本框中键入,相关结果应相应地显示在表中。我可以很容易地创建一个“提交”按钮来提交搜索条件并获得结果。但我真正想要的是在textbox上实现一个keylistener,它将在提交查询之前等待大约2秒钟。例如,如果用户输入“D”并等待1秒,然后输入“O”,则查询提交将在输入“O”后2秒发生(每次击键时更新延迟时间)。可以在每个按键上尝试一个java.util.Timer,取消它并重新安排一个用于执行查询的TimerTask。

在每个按键上尝试一个java.util.Timer,取消它并重新安排一个用于执行查询的TimerTask。

您确定您的查询速度足以处理此类事情吗?即使有额外的查询开销,我真正关心的是等待2秒钟,然后从文本框中获取输入并将其显示在我的JTable中。1)它的拼写是Java,而不是Java。2) 你的问题是什么?你确定你的查询速度足以处理这些事情吗?即使有额外的查询开销,我真正关心的是等待2秒钟,然后从文本框中获取输入并在我的JTable中显示。1)它拼写为Java,而不是Java。2) 你的问题是什么?非常感谢汤姆。我会尝试你的建议,并在完成后给你反馈。我已经尝试使用TimerTask,它正在工作(我在X秒后得到结果)。但是假设我有一个任务仍然在等待延迟时间,直到它执行为止,而另一个任务在此期间执行。如何完全取消上一个任务,以便只能执行新任务?我尝试了timer.cancel(),但这将不允许我重用timer类对象。哦,那么你建议为每个任务创建一个计时器?不管怎样,我已经完成了以下逻辑:void run(){timer.cancel();timer=new timer();//这里是业务逻辑}这将取消上一个计时器,并为新任务创建一个新计时器。谢谢大家的帮助非常感谢汤姆。我会尝试你的建议,并在完成后给你反馈。我已经尝试使用TimerTask,它正在工作(我在X秒后得到结果)。但是假设我有一个任务仍然在等待延迟时间,直到它执行为止,而另一个任务在此期间执行。如何完全取消上一个任务,以便只能执行新任务?我尝试了timer.cancel(),但这将不允许我重用timer类对象。哦,那么你建议为每个任务创建一个计时器?不管怎样,我已经完成了以下逻辑:void run(){timer.cancel();timer=new timer();//这里是业务逻辑}这将取消上一个计时器,并为新任务创建一个新计时器。谢谢大家的帮助()