【问题标题】:Java: Determine if the user has stopped typingJava:确定用户是否停止输入
【发布时间】:2011-10-06 02:30:35
【问题描述】:

我正在用 Java 创建一个简单的文本编辑器,并尝试添加撤消和重做功能。我希望程序能够确定用户是否停止在文本区域中输入,而不仅仅是他们是否输入了字符。只有当这是他们键入的唯一内容时,程序才应保存单个字符。你会怎么做呢?

【问题讨论】:

  • 这是个好主意。你知道 javax.swing API 吗?

标签: java text typing


【解决方案1】:

定义“停止输入”。

基本上,我会考虑使用计时器。采取每个角色事件,添加一个计数器和一个计时器,每次有 Key Up 事件时都会重新启动。将“停止输入”定义为经过足够的时间。

然后想想如果你真的想要那样做,因为这听起来会让我完全把火把和干草叉带到开发者的房子里。 p>

【讨论】:

  • 很好的建议,以及思考这是否真的是你想要的,或者更重要的是,你的用户想要的。过于自动化的事情要非常小心。您不想以 Word 之类的东西结束,当您触发其晦涩的规则时,它似乎会随机重新格式化文本。
【解决方案2】:

主类中的某处;

public static long lastKeyPressTime = 0l;

在您的 KeyListener 界面中;

public void keyPressed(KeyEvent evt) {
   lastKeyPressTime = System.currentTimeMillis();
}

最后,在一个适当的、快速运行的线程中;

if((system.currentTimeMillis() - lastKeyPressTime) > 2000) {
   //do something, because the user hasnt typed for two seconds
}

【讨论】:

  • 这不是线程安全的。 lastKeyPressTime 应该在此处标记为 volatile,以便“快速运行”线程可以观察到从 EDT 对其进行的写入。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多