Java 多个电话,一个计时器

Java 多个电话,一个计时器,java,methods,timer,Java,Methods,Timer,我已经为这个java问题挣扎了几个小时,我最初认为这很容易- 问题是我有一个文本字段。。每次用户在字段中写入字符时,都会调用一个方法。问题是我想实现一个计时器。时间设置为例如5秒。每次用户写入时,计时器都会重置。那意味着。。仅当用户在5秒钟内未写入任何内容时,才会调用该方法 我试过使用线程、定时器、定时器任务等。当我用谷歌搜索它时,你不能真正修改定时器任务,你必须每次启动一个新的定时器任务 您能帮助我吗?是的,每次您都必须中止并创建一个新的计时器/计时器任务,一旦它运行,就无法暂停或重置它。根据

我已经为这个java问题挣扎了几个小时,我最初认为这很容易-

问题是我有一个文本字段。。每次用户在字段中写入字符时,都会调用一个方法。问题是我想实现一个计时器。时间设置为例如5秒。每次用户写入时,计时器都会重置。那意味着。。仅当用户在5秒钟内未写入任何内容时,才会调用该方法

我试过使用线程、定时器、定时器任务等。当我用谷歌搜索它时,你不能真正修改定时器任务,你必须每次启动一个新的定时器任务


您能帮助我吗?

是的,每次您都必须中止并创建一个新的计时器/计时器任务,一旦它运行,就无法暂停或重置它。根据计时要求的难易程度,您可以通过运行计时器来解决此问题,该计时器大约每秒触发一次,并查看最后一个字符的输入时间,以决定是否需要实际执行某些操作

这将显著减少开销,因为您不会为每次按键启动新线程并结束前一个线程(这是计时器所做的)

此外,如果您至少有Java 5可供使用,请查看此问题以获得更好的选择:


使用DocumentListener来侦听从JTextField添加/删除的文本

然后你可以使用一个摆动计时器。它有一个restart()方法