2017-01-22 64 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); 
        }); 
      }); 
    } 
相關問題