如何添加键盘快捷键以从任务栏或快速启动最大化Java应用程序?

时间:2015-04-11 17:02:41

标签: java swing java-native-interface

我有一个Java应用程序。我想为此添加一个功能,当应用程序最小化时,我按键盘上的某个键,应用程序最大化。如何通过Java代码实现此功能?

2 个答案:

答案 0 :(得分:3)

需要本机代码或黑客/滥用Java GUI实现。

在具有XWindows显示的Linux(或其他类似Unix / Unix的系统)中,您需要从根窗口和所有子项注册键盘事件并处理这些事件。您可以打开自己与X显示服务器的连接,只是为了从根窗口接收键盘事件。

请参阅" xev"的源代码。有关在现有窗口(如根窗口)上注册侦听器的示例。您需要修改它才能捕获键盘事件。不过,我不记得如何从所有窗口获取按键事件。您必须在根窗口上设置侦听器属性以侦听来自所有子节点的键事件(如果可能)或遍历所有窗口并将事件侦听器属性添加到每个窗口,同时还注册所有窗口创建事件,以便您可以设置每个新窗口创建的监听器属性。请参阅" xdpyinfo"的源代码。有关如何迭代所有窗口的示例。

您必须运行单独的线程来运行XEvent侦听器,然后在检测到键盘事件时,将事件发送回Java应用程序以最大化您的应用程序。因此,您需要知道要将该事件发送到的窗口ID。

有点乏味,但并不难做到。

我怀疑可能会破解/滥用Java显示类来从Java中做同样的事情,但是你自己就是这样。

对于基于Windows的系统?我没有经验编写GUI的经验,所以我无法帮助那些。

答案 1 :(得分:2)

  

如何通过Java代码实现此功能?

你做不到。当应用程序需要本机代码拦截键盘事件。没有焦点。