我有一个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);
}
}
答案 0 :(得分:1)
我认为您的要求无法在纯Java中实现,您需要一些本机代码才能实现此目的。
如果您不想自己编写所有内容并且您的应用程序在Windows上运行,您可以查看提供全局热键功能的JIntellitype。
答案 1 :(得分:0)
对于有类似问题的人:
通过收听所有用户输入,您可以简单地监听所需的密钥组合,但这需要额外的库。认为这不是一个好的解决方案,它是一个有效的解决方案。
链接#1:关于Java中的全局事件监视器和链接#2的源
Listening for input without focus in Java
链接#2:具有Windows,Linux,MacOS X所需功能的库