使用GTK在Linux上的触摸屏和openjfx滚动问题

问题描述

我目前正在开发带有触摸屏的信息亭类型的应用程序,其中包含视频列表。用户将使用触摸屏滚动到他想观看的视频,然后在其上按下以观看该视频。我在安装了Ubuntu 20.04 LTS的Intel NUC上运行此程序。这是触摸屏的lsusb信息:

Bus 001 Device 018: ID 2575:0401 Weida Hi-Tech                CoolTouchR System

我正在用java / javafx编写此应用程序,因为这是我最感到满意的。

当我使用GTK3(默认)时,该应用程序不响应任何触摸屏事件, 我发现here,可以使用-Djdk.gtk.version=2来强制Java使用GTK2。这对于普通的触摸输入有效,但是当我开始滚动时,在用户移动手指而不触摸屏幕以使滚动范围超出屏幕允许范围后,屏幕会回弹。这仅在JavaFX应用程序中的Linux上发生。 GTK应用程序(例如Ubuntu应用程序商店)不必遇到问题。

您可以在我录制的gif中看到它的发生。 当我开始从底部拖动向下时,请观看滚动条/数字。 Gif link

我尝试使用不同版本的java / javafx:

  • Oracle JDK 8
  • OpenJDK 8
  • OpenJDK 11 + Gluon OpenJFX 11(也尝试v15)
  • Liberica OpenJRE 8完整版

他们都给GTK2 / GTK3带来了完全相同的问题

复制此错误的代码如下:

public class App extends Application {
    public void start(Stage stage) throws Exception {
        VBox vBox = new VBox();

        for (int i = 0; i < 1000; i++) {
            vBox.getChildren().add(new Label("Label: "+i));
        }
        ScrollPane scrollPane = new ScrollPane(vBox);
        scrollPane.setPannable(true);

        stage.setScene(new Scene(scrollPane));
        stage.show();
    }
}

我还无法找到修复程序,之前是否有人遇到过此问题?有谁知道如何解决这一问题?谢谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)