首页 > 解决方案 > 使用 GTK 在 linux 上使用触摸屏和 openjfx 滚动问题

问题描述

我目前正在开发一个带有视频列表的以触摸屏为中心的信息亭类型的应用程序。用户将使用触摸屏滚动到他想看的视频,然后按下它来查看它。我在安装了 Ubuntu 20.04 LTS 的英特尔 NUC 上运行它。这是触摸屏的 lsusb 信息:

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

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

当我使用 GTK3(默认)时,应用程序不响应任何触摸屏事件,我在这里找到了,我可以使用它-Djdk.gtk.version=2来强制 java 使用 GTK2。这适用于正常的触摸输入,但是当我开始滚动屏幕时,在用户移动手指而不触摸屏幕以滚动比屏幕允许的更远之后,屏幕会回弹。这只发生在 Linux 上的 javaFX 应用程序中。GTK 应用程序,如 Ubuntu 应用程序商店,没有问题。

你可以在我录制的这个 gif 中看到它的发生。当我开始从底部向下拖动时,请注意滚动条/数字。 GIF 链接

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

他们都给出了与 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();
    }
}

我还没有找到解决方法,有其他人遇到过吗?有谁知道如何解决这一问题?谢谢

标签: javajavafxjavafx-8gtk3gtk2

解决方案


推荐阅读