2017-01-22 63 views
1

目前我为Raspberry Pi 3开发JavaFX应用程序。为了在我的PC上进行开发,我使用了Ubuntu 16.04.1,OpenJDK 1.8.0_111和OpenJFX 8.0.60。为了在Raspberri Pi上运行,我使用带有PIXEL的Raspbian Jessie(在控制台模式下启动),OpenJDK 1.8.0_40和OpenJFX 8.0.60。Raspberry Pi无法在JavaFX应用程序中隐藏鼠标光标

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

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

scene.setCursor(Cursor.NONE); 

我使用

java -jar MyApp.jar 

这样做了之后开始从bash shell中的树莓派的应用setCurser属性最初起作用。但在触摸屏幕或移动鼠标后,屏幕上会出现默认的鼠标光标。这似乎是一个悬而未决的问题:Post on raspberrypi.org forum

OpenJFX Wiki说:

注意的JavaFX对树莓派缺省配置时 不使用X11。相反,JavaFX直接与显示器缓冲器和输入设备配合使用。所以在启动JavaFX时,不应该让X11桌面 运行。

作为一种解决方法,我该如何将图形鼠标光标隐藏在Raspbian Jessie的framebuffer中?

回答

1

我找到了这个bug的解决方法。尽管在我的应用程序开始时它会产生一些闪烁,但在我的情况下是可以接受的。 (也可以尝试在程序启动过程中关闭背光) 这里是魔术代码(治愈效果被偶然发现在几个全屏窗口中使用)

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); 
        }); 
      }); 
    } 
相关问题