我一直在努力解决这个java问题几个小时,我首先想到这很容易.. -.-
问题是我有一个文本域..每次用户在字段中写一个字符时,都会调用一个方法。问题是我想实现一个计时器。时间设置为例如5秒。每次用户写入时,计时器都会重置。这意味着..只有在用户没有写任何东西5秒钟时才会调用该方法。
我已经尝试过使用线程,计时器,时间任务等等。因为我谷歌你不能真正修改一个时间任务,你必须每次都开始一个新的。
你能帮助我吗?
答案 0 :(得分:0)
是的,每次都必须中止并创建一个新的Timer / TimerTask,一旦它运行就无法暂停或重置它。根据您的时间要求有多难,您可以通过运行每秒触发一次的计时器来解决这个问题,并查看输入最后一个字符的时间,以确定您是否需要实际执行某些操作。
这将显着减少开销,因为你不会为每个按键启动一个新线程并结束前一个线程(这就是Timer所做的)。
此外,如果您至少拥有Java 5,请查看此问题以获得更好的替代方案:
答案 1 :(得分:0)
使用DocumentListener侦听从JTextField添加/删除的文本。
然后你可以使用Swing Timer。它有一个restart()方法。