目前我为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属性最初起作用 . 但是在触摸屏幕或移动鼠标后,屏幕上会出现默认的鼠标光标 . 这似乎是一个尚未解决的问题:Post on raspberrypi.org forum
请注意,Raspberry Pi上的JavaFX的默认配置不使用X11 . 相反,JavaFX直接与显示帧缓冲区和输入设备一起工作 . 因此,启动JavaFX时不应该运行X11桌面 .
作为一种解决方法,如何在Raspbian Jessie的framebuffer中隐藏图形鼠标光标?
2 回答
我找到了这个bug的解决方法 . 虽然它在我的应用程序开始时会产生一些闪烁,但在我的情况下是可以接受的 . (也可以尝试在程序启动时关闭背光)这是魔术代码(发现固化效果意外地与几个全屏窗口一起工作)
对于在搜索时偶然发现此问题的任何人:
我能够通过反编译jfxrt.jar并更改类com.sun.glass.ui.monocle.DispmanCursor中的一行来解决问题 . 我用BytecodeViewer反编译它,将
setVisibility
方法更改为始终设置false
值并保存为jar . (是的,更合适的方法是从源代码构建openjfx,但是's way faster this way for such a small change) If anyone knows a way to get an instance of DispmanCursor from code to use the method (although it' s包本地,所以我怀疑是否有办法) - 让我知道 .我添加的另一个修复是更改com.sun.glass.ui.monocle.AcceleratedScreen - 它具有自那时以来已更改的硬编码库名称:libGLESv2.so和libEGL.so现在称为libbrcmGLESv2.so和libbrcmEGL.so分别参见this thread获取更多信息 .
这是最后的fixed jfxrt.jar .