java - Raspberry Pi 无法在 JavaFX 应用程序中隐藏鼠标光标

标签 java linux javafx raspberry-pi raspbian

目前,我正在为 Raspberry Pi 3 开发 JavaFX 应用程序。为了在我的 PC 上进行开发,我使用 Ubuntu 16.04.1、OpenJDK 1.8.0_111 和 OpenJFX 8.0.60。为了在 Raspberri Pi 上运行,我使用 Raspbian Jessie 和 PIXEL(以控制台模式启动)、OpenJDK 1.8.0_40 和 OpenJFX 8.0.60。

图形鼠标光标是不必要的,因为用户应该只使用触摸屏与应用程序交互。此外,鼠标光标很烦人,因为它稍微覆盖了屏幕内容。此外,每当触摸屏幕时,它都会通过改变位置来刺激用户。因此我想隐藏屏幕上的鼠标光标。

在我的电脑上,我可以使用以下代码隐藏鼠标光标:

scene.setCursor(Cursor.NONE);

我使用 bash shell 在 Raspberry Pi 上启动应用程序

java -jar MyApp.jar

这样做之后,setCurser 属性开始工作。但是在触摸屏幕或移动鼠标后,默认的鼠标光标出现在屏幕上。这似乎是一个 Unresolved 问题:Post on raspberrypi.org forum

OpenJFX Wiki说:

Note that the default configuration of JavaFX on the Raspberry Pi does not use X11. Instead JavaFX works directly with the display framebuffer and input devices. So you should not have the X11 desktop running when starting JavaFX.

作为解决方法,我如何在 Raspbian Jessie 上的帧缓冲区中隐藏图形鼠标光标?

最佳答案

我已经找到解决此错误的方法。虽然它在我的应用程序开始时会产生一些闪烁,但在我的情况下是可以接受的。 (也可以尝试在程序启动时关闭背光) 这是神奇的代码(治愈效果是在几个全屏窗口工作时不小心发现的)

private void fixMouse(Stage primaryStage)
    {
        Platform.runLater(()->{
            //Show mouse cursor
            Robot robot = com.sun.glass.ui.Application.GetApplication().createRobot();

            robot.mouseMove(790,470);
            robot.destroy();

            //Show fullscreen dialog
            final Stage dialog = new Stage();
            dialog.initModality(Modality.APPLICATION_MODAL);
            dialog.initOwner(primaryStage);

            StackPane dialogLayout = new StackPane();
            dialog.setFullScreen(true);
            dialog.setResizable(false);
            dialog.setFullScreenExitKeyCombination(KeyCombination.NO_MATCH);

            Scene dialogScene = new Scene(dialogLayout, 0, 0);
            dialogScene.setCursor(Cursor.NONE);
            dialogScene.setFill(Color.BLACK);
            dialogLayout.setBackground(Background.EMPTY);

            dialog.setScene(dialogScene);
            dialog.show();

            // Auto close the dialog
            Platform.runLater(()->{
                        dialog.close();
                        primaryStage.setFullScreen(true);
                    });
            });
    }

关于java - Raspberry Pi 无法在 JavaFX 应用程序中隐藏鼠标光标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41794346/

相关文章:

java - 在java中获取命令输出的最简单方法

c++ - 如何检查显示器是否已插入? (Linux)

java - 如何在 FXML 中打印选定的 Pane

java - 如何在 Label JavaFX 中添加多行

Javafx 如何在 GridPane 中找到特定按钮

java - 在多个类中使用相同的函数

java - 适用于 Android 的 Google+ java 入门应用程序出现黑屏?

linux - 使用 Bash 检查另一个目录中是否存在相同的文件

java - 泛型 - 如何定义仅采用实现特定接口(interface)的类的方法

java - 动态多级层次结构 JSON 到 Java Pojo。重复用于多个项目