Я создаю приложение JavaFX для Raspberry Pi 3B + с официальным 7-дюймовым сенсорным экраном (800x480). Я использую последнюю безликую Raspbian Jessie. Экран питается от Raspberry Pi через провода-перемычки и соединяется с лентой DSI Приложение имеет вертикальную компоновку, поэтому я поворачиваю изображение с помощью display_rotate=3
в config.txt и поворачиваю сенсорные вводы в самом JavaFX, используя следующие параметры JVM (dtoverlay=rpi-ft5406,touchscreen-swapped-x-y=1,touchscreen-inverted-y=1,touchscreen-size-x=480
в config.txt дает тот же результат) :
-Dmonocle.input.0/0/0/0.minX=0
-Dmonocle.input.0/0/0/0.maxX=480
-Dmonocle.input.0/0/0/0.minY=480
-Dmonocle.input.0/0/0/0.maxY=-320
-Dmonocle.input.0/0/0/0.flipXY=true
Теперь, это работает большую часть времени. Однако в некоторых случаях (легко воспроизвести, быстро нажав в той же точке), точка касания не регистрируется должным образом, и одна из координат возвращается как 0, как 0.0, 765.0
или 442.0, 0.0
(так что если пользователь пытается нажать кнопку, ничего не происходит, так как касание отбрасывается в левую / верхнюю часть). Это может произойти в любой точке экрана, и это не связано с загрузкой процессора. Прямо сейчас я использую Liberica JDK 10, до того, как я использовал OpenJDK8, ошибка присутствовала в обоих случаях. Что я могу с этим сделать, есть ли способ повторно опросить экран вручную?
Я использую следующий код для регистрации координат Touchpoint (корень является основным узлом приложения)
root.setOnTouchPressed(event -> {
TouchPoint point = event.getTouchPoint();
System.out.println(point.getSceneX() + "," + point.getSceneY());
});