【问题标题】:JavaFX global keyboard listenerJavaFX 全局键盘监听器
【发布时间】:2013-11-15 02:58:59
【问题描述】:

我有一个 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);
}
}

【问题讨论】:

    标签: java keyboard javafx listener


    【解决方案1】:

    我认为您的要求不能用纯 java 实现,您需要一些本机代码来完成。

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

    【讨论】:

      【解决方案2】:

      对于有类似问题的任何人:

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

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

      Listening for input without focus in Java

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

      https://github.com/kwhat/jnativehook

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-10-25
        • 1970-01-01
        • 1970-01-01
        • 2023-03-04
        • 2020-05-30
        • 2021-02-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多