2017-04-15 52 views
1

我试图用jnativehooks来更新我的GUI(例如通过热键更改jButton和jLabel的文本/颜色),所以当我按下一个热键时它会更新我的GUI,但是经过几个小时的搜索和尝试之后,我仍然没有有运气。用JNativeHook更新gui?

我试过重新验证/验证/重绘等,但似乎并没有工作(其调用热键f9并在该部分运行脚本罚款,因为它打印出system.out),我是一个新手所以我必须失去了一些东西简单:(

这里是我的项目(从头所以只有要领,与jnativehook库):https://www.dropbox.com/sh/keyp0tb2nobjg8t/AABOUQFqBWETRoX9D1vtcZe2a?dl=0

main.java:https://www.dropbox.com/sh/keyp0tb2nobjg8t/AAA0aib7y_k0uKtJ4sbnYHN7a/src?dl=0&preview=Main.java

任何帮助,将不胜感激。

对于任何不能查看保存箱的人的主要类代码:https://hastebin.com/uqarilawop.java(太多的缩进以在stackoverflow上发布,因为我不知道我失踪了什么)

+0

请发表你的问题相关的代码,如果你想一些帮助。它不是真的邀请从某处下载未知文件进行修复。另外,可能会详细说明'更新我的GUI'的含义。什么GUI,以哪种方式“更新”? – n247s

+0

嗨,感谢您的评论,我已经添加了一个hastebin链接(将太长,以发布在stackoverflow,因为我需要缩进170lines,因为我不知道我实际上失踪:()另外,添加尝试更新jButton和jLabel通过热键显示颜色/文字。 – Pengiuns

回答

0

您不是以线程安全的方式使用库来执行Swing。所有UI事件都发生在Swing Dispatch线程上,因此您需要将本机库切换为使用Swing而不是其内置的调度程序!请参阅https://github.com/kwhat/jnativehook/wiki/Swing

// Set the event dispatcher to a swing safe executor service. GlobalScreen.setEventDispatcher(new SwingDispatchService());