我开发了虚拟键盘模块,它包含2个类
做什么是mainFrame:
当我运行程序时,MainFrame加载GUI并在“public void run()”中启动“while(true)”循环。这个循环看起来像:
while(true){
if(status_changed){
jTextArea.setText(getKbml().getData());
getKbml.setStatus_changed(false);
}
sleep(500);
}
在键盘监听器中更改了布尔状态status_changed。
KBM是虚拟键盘。当用户键入文本并按Enter键时,它会在KBMListener中将字符串数据设置为textd并将boolean status_changed设置为true。
KBML只需将MainFrame与KBM连接,每次用户点击进入大型机的textarea时,都会从KBM加载键盘。
我想要的是每0.5秒或当按下输入时立即获得大型机的价值。
虽然循环工作正常,但1.6GHz双核处理器的CPU使用率约为12%。 我听说过回调但我无法理解它是如何工作的。我希望有人可以帮助我...请尽量避免文件听众。
答案 0 :(得分:1)
您需要了解的是Observer设计模式。它使用一个接口来通知“听众”变化,并且通常是无限循环的答案。您可以在此处找到一个简单的实施示例+更多信息:http://java.dzone.com/articles/design-patterns-uncovered
或者只是在网上搜索“observer pattern java”。