按键打开应用程序

时间:2016-07-07 03:31:27

标签: java eclipse swing jframe

我正在构建这个弹出式学习新语言应用程序,如果用户发现一个未知单词,他只需按任意键盘键(例如alt + p),以便弹出应用程序并允许他插入新单词

并且为了使密钥从我编码以下的任何地方收听

public class IsKeyPressed extends JFrame implements KeyListener {
public IsKeyPressed() {
    this.setExtendedState(MAXIMIZED_BOTH);
    this.setUndecorated(true);
    this.setBackground(new Color(0, 0, 0, 0));
    this.addKeyListener(this);
    this.setAlwaysOnTop(true);
    this.setVisible(true);
    while (true) {
        this.toFront();
        this.requestFocus();
        this.repaint();
    }
}

public static void main(String[] args) {
    new IsKeyPressed();
}

@Override
public void keyPressed(KeyEvent ke) {

    //open the pop up application
}

但是如果框架从任务栏聚焦,它只能正常工作 所以基本上它不起作用

任何想法如何解决?谢谢!

1 个答案:

答案 0 :(得分:4)

  

但是如果框架从任务栏聚焦,它只能正常工作,所以基本上它不起作用

     

任何想法如何解决?

不是核心Java,这是肯定的。你问的是如何创建一个通用的密钥监听器,即使应用程序没有焦点也可以工作,这是核心Java GUI库不能自己做的事情,因为这个功能需要这个功能。编程人员接近操作系统以进行特定于操作系统的调用,并且Java被构建为尽可能与操作系统无关。

所以可能的解决方案包括

  • 在C中编写自己的OS例程,并使用JNI将它们与Java程序进行网格划分
  • 使用JNA编写Java OS例程
  • 或(我最喜欢的)使用操作系统专用工具(例如Auto-It for Windows)来捕获按键并恢复程序,然后通过流将其与程序进行网格划分。