2013-03-24 29 views
-3

我已经开发了虚拟键盘模块,它包含了2类的Java的东西来代替,而(真)环

  1. KBM(模块本身)(上输入按下设置字符串数据的价值的文字我键入KBMListener和布尔改为真正的KBMListener)
  2. KBMListener
  3. 大型机

什么是做大型机:

当我运行程序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是虚拟键盘。当用户键入文本并按回车键时,它将字符串数据设置为文本类型,并且在KBMListener中将布尔型status_changed设置为true。

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

我想要的是每0.5秒或当按下Enter键时即刻获得大型机的价值。

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

+5

为什么在一段中发布无效的伪代码,而不是发布*实际*代码 - 即使它被简化了 - 作为代码?目前你的问题很难理解。 – 2013-03-24 09:21:35

+0

显示你在代码中尝试过的任何东西..这将比这个大的代码描述更容易理解。 – 2013-03-24 09:22:33

+0

为什么你不想使用DocumentListener - 这在我看来正是你需要实现这个效率。 .. – 2013-03-24 09:23:08

回答

1

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

或者只需在Web上搜索“observer pattern java”即可。

+0

公共类MainFrame扩展javax.swing.JFrame实现Runnable,我可以如何扩展与观察。如果它扩展与JFrame? – 2013-03-24 09:42:58

+0

@ user1934053你不必扩展任何东西。只需实现监听器接口。我链接的教程使用内置的观察器类,这不是很好,我很抱歉。只是搜索谷歌的“观察者模式”,你会发现很多的信息,但我很惊讶没有好的结果出来的Java ... – MarioDS 2013-03-24 12:06:21