-3

我开发了虚拟键盘模块,它包含 2 个类

  1. KBM(模块本身)(在输入时它将字符串数据的值设置为我在 KBMListener 中键入的文本,并且布尔值在 KBMListener 中更改为 true)
  2. 知识库监听器
  3. 主机

mainFrame 在做什么:

当我运行程序 MainFrame 加载 GUI 并在“public void run()”中启动“while(true)”循环。这个循环看起来像:

while(true){
    if(status_changed){
        jTextArea.setText(getKbml().getData());   
        getKbml.setStatus_changed(false);
    }
    sleep(500);
}

布尔状态_changed 在键盘侦听器中更改。

KBM 是虚拟键盘。当用户键入文本并按下回车键时,它会将字符串数据设置为文本类型,并且在 KBMListener 中将 boolean status_changed 设置为 true。

KBML 只是将 MainFrame 与 KBM 连接起来,并在用户每次点击 mainframe 中的 textarea 时从 KBM 加载键盘。

我想要的是每 0.5 秒或按下回车键时立即为大型机获取价值。

虽然循环运行良好,但在 1.6GHz 双核处理器上 CPU 使用率约为 12%。我听说过回调,但我不明白它是如何工作的。我希望有人可以帮助我...请尽量避免文件监听器。

4

1 回答 1

1

您要研究的是观察者设计模式。它使用一个接口来通知“侦听器”的变化,并且通常是无限循环的答案。您可以在这里找到一个简单的实现示例 + 更多信息:http: //java.dzone.com/articles/design-patterns-uncovered

或者干脆在网上搜索“observer pattern java”。

于 2013-03-24T09:24:59.503 回答