水平滚动监听器

12

我感觉在网络上搜了一半还是找不到解决方案...
我有一个展示地图(不同国家等)的Java应用程序。
目前您可以使用鼠标滚轮向上或向下滚动...
我想让它能够左右滚动(水平滚动)。
我只需要一个监听器(在Swing或Javafx中都可以),当鼠标滚轮倾斜时触发,无需对地图进行焦点设置(仅通过鼠标悬停即可),且不显示任何滚动条。


1
“node.setOnScroll(new EventHandler()…” 这个怎么样?它会提供Y和X坐标。 - Felipe Sulser
它不会在侧向滚动时触发... - RoiEX
曾经遇到过类似的问题。这是解决方案:https://dev59.com/3Gcs5IYBdhLWcg3wXixDJScrollPane 没有响应鼠标滚轮滚动。 - Felipe Sulser
我的问题是,事件可以在普通滚动事件上触发,但无法识别侧向滚动。 - RoiEX
1个回答

2
每次侧向滚动时,以下代码将打印一条消息...
import javafx.application.Application;
import javafx.event.Event;
import javafx.event.EventHandler;
import javafx.event.EventType;
import javafx.scene.Scene;
import javafx.scene.input.ScrollEvent;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;


public class Main extends Application {
    @Override
    public void start(Stage primaryStage) {
        try {
            BorderPane root = new BorderPane();
            Scene scene = new Scene(root,400,400);
            scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
            primaryStage.setScene(scene);
            scene.setOnScroll(new EventHandler<ScrollEvent>(){

                @Override
                public void handle(ScrollEvent event) {
                    System.out.println("Scroll:" + event.getDeltaX());
                }
            });
            primaryStage.show();
        } catch(Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        launch(args);
    }
}

需要考虑的一件事情: 显然,在将JFXPanel嵌入到JFrame中时,侧向滚动事件没有被传递。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接