我有一个Java应用程序。我想为此添加一个功能,当应用程序最小化时,我按键盘上的某个键,应用程序最大化。如何通过Java代码实现此功能?
答案 0 :(得分:3)
需要本机代码或黑客/滥用Java GUI实现。
在具有XWindows显示的Linux(或其他类似Unix / Unix的系统)中,您需要从根窗口和所有子项注册键盘事件并处理这些事件。您可以打开自己与X显示服务器的连接,只是为了从根窗口接收键盘事件。
请参阅" xev"的源代码。有关在现有窗口(如根窗口)上注册侦听器的示例。您需要修改它才能捕获键盘事件。不过,我不记得如何从所有窗口获取按键事件。您必须在根窗口上设置侦听器属性以侦听来自所有子节点的键事件(如果可能)或遍历所有窗口并将事件侦听器属性添加到每个窗口,同时还注册所有窗口创建事件,以便您可以设置每个新窗口创建的监听器属性。请参阅" xdpyinfo"的源代码。有关如何迭代所有窗口的示例。
您必须运行单独的线程来运行XEvent侦听器,然后在检测到键盘事件时,将事件发送回Java应用程序以最大化您的应用程序。因此,您需要知道要将该事件发送到的窗口ID。
有点乏味,但并不难做到。
我怀疑可能会破解/滥用Java显示类来从Java中做同样的事情,但是你自己就是这样。
对于基于Windows的系统?我没有经验编写GUI的经验,所以我无法帮助那些。
答案 1 :(得分:2)
如何通过Java代码实现此功能?
你做不到。当应用程序需要本机代码拦截键盘事件。没有焦点。