【发布时间】:2015-03-31 00:49:35
【问题描述】:
假设我有一个没有聚焦的窗口。
有没有其他方法可以捕获使用KeyListener 的按键。
import javax.swing.JFrame;
public class Main {
public static void main(String[] args) {
Window w = new Window();
}
}
class Window extends JFrame {
private static final long serialVersionUID = -6791503228233798055L;
public JFrame fr;
Window() {
fr = new JFrame();
fr.setVisible(true);
fr.setSize(500, 500);
fr.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
}
如何在没有焦点窗口和 KeyListener 的情况下捕获键?
【问题讨论】:
-
Key Bindings 可能是您正在寻找的。尽管这确实需要某种焦点,但您可以要求任何元素的焦点为
WHEN_IN_FOCUS_WINDOW,而不是要求该特定组件具有焦点。 如果您想在没有任何 GUI 元素处于焦点或完全没有 GUI 的情况下捕捉关键事件,您需要使用 native listener -
谢谢@VinceEmigh,但我宁愿使用C++。
-
本地侦听器在后台使用 C++(或平台本地的另一种语言,例如 C 或汇编)。它使用称为 Java 本地接口 (JNI) 的东西访问本地详细信息。您可以通过使用 JNI 编写自己的实现来达到同样的目的,但是为什么要浪费时间重新发明轮子呢?