簡體   English   中英

JavaFX 全局鍵盤偵聽器

[英]JavaFX global keyboard 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);
}
}

我認為您的要求無法在純 Java 中實現,您需要一些本機代碼來實現這一點。

如果您不想自己編寫所有內容並且您的應用程序在 Windows 上運行,您可以查看提供全局熱鍵功能的JIntellitype

對於任何有類似問題的人:

通過偵聽所有用戶輸入,您可以簡單地偵聽所需的鍵組合,但這需要額外的庫。 認為這不是一個好的解決方案,它是一個有效的解決方案。

鏈接 #1:關於 Java 中的全局事件偵聽器和鏈接 #2 的來源

在 Java 中沒有焦點地監聽輸入

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

https://github.com/kwhat/jnativehook

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM