【问题标题】:How to execute after no input happend for some time一段时间没有输入后如何执行
【发布时间】:2012-07-03 14:41:53
【问题描述】:

我正在尝试实现以下行为:

您按下一个可以切换多个元素的按钮(在摆动中)。关键是,只有在最后一秒没有发生切换时才会出现消息或其他内容。这意味着您按button1,等待一秒钟,然后您按button1 的消息出现;如果您按button1,然后(不到一秒)按button2,则消息应显示button2 已按下。

我发现了一些类似这样的计时器(我现在知道,这是一个 android 示例。也许 Swing 有类似的东西??):

final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
  @Override
  public void run() {
    //Do something after 1000ms
  }
}, 1000);

我怎样才能停止任务?我不需要任何代码,只是一个提示。

【问题讨论】:

  • 向线程传递一个实现可运行的类的实例,让该类有一个变量,您可以在 run() 中检查它是否可以执行您想做的任何事情。
  • 不幸的是我不太明白这一点:(你的意思是我应该只为“发送消息”运行一个线程,有一个布尔值,只有在最后一次按下是在一秒钟前才被设置?那会我认为不是真正的表现。

标签: java swing time


【解决方案1】:

代码

final Handler handler = new Handler();
Runnable runIt = new Runnable() {
  @Override
  public void run() {
  //Do something after 1000ms
  }
}
handler.postDelayed(runIt, 1000);

您可以通过

从队列中删除消息
handler.removeCallbacks(runIt);

【讨论】:

  • 我错过了什么吗?处理程序类没有类似 postDelayed() 的函数。这是安卓的吗?我需要它用于java swing...应该这么说。我认为处理程序类是用于记录目的的类
  • 真可怜 :) 希望其他人可以帮助我 XD
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-09-09
  • 2013-08-19
  • 1970-01-01
  • 1970-01-01
  • 2020-10-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多