JavaFX全局键盘监听器

时间:2013-11-04 13:21:53

标签: java keyboard javafx listener

我有一个JavaFX应用程序需要监听ctrl + space + T,以便在应用程序处于后台或最小化时将应用程序窗口置于前面。我可以知道是否有人有解决方案吗?

public class MainApp extends Application {

@Override
public void start(Stage primaryStage) {
    primaryStage = setStagePositionToBottomRight(primaryStage);
    loadAndStartMainScreen(primaryStage);
}

private void loadAndStartMainScreen(Stage primaryStage) {
    MainViewController scenes = new MainViewController();
    AnchorPane mainScene = scenes.getMainView();
    Scene scene = new Scene(mainScene);
    primaryStage.setScene(scene);
    primaryStage.show();

}



private Stage setStagePositionToBottomRight(Stage primaryStage) {
    final int coordinateX = 335;
    final int coordinateY = 510;

    Rectangle2D primaryScreenBounds = Screen.getPrimary().getVisualBounds();
    // primaryStage.initStyle(StageStyle.UNDECORATED);
    primaryStage.setX(primaryScreenBounds.getMaxX() - coordinateX);
    primaryStage.setY(primaryScreenBounds.getMaxY() - coordinateY);

    return primaryStage;

}

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

2 个答案:

答案 0 :(得分:1)

我认为您的要求无法在纯Java中实现,您需要一些本机代码才能实现此目的。

如果您不想自己编写所有内容并且您的应用程序在Windows上运行,您可以查看提供全局热键功能的JIntellitype

答案 1 :(得分:0)

对于有类似问题的人:

通过收听所有用户输入,您可以简单地监听所需的密钥组合,但这需要额外的库。认为这不是一个好的解决方案,它是一个有效的解决方案。

链接#1:关于Java中的全局事件监视器和链接#2的源

Listening for input without focus in Java

链接#2:具有Windows,Linux,MacOS X所需功能的库

https://github.com/kwhat/jnativehook