我需要知道如何更改ScrollPane对象用于上下移动内容的数量。例如,ScrollBar具有以下两种方法:

scrollBar.setUnitIncrement(10);
scrollBar.setBlockIncrement(50);

如何使用ScrollPane而不是ScrollBar进行相同操作?

最佳答案

有相同的问题,无法找到答案。最终,从Erik提供的link中获得了正确的方法,并使其适应了我的需求。

由于scrollPane本身不会触发“setOnScroll”事件(可能是因为它在执行此操作之前就被消耗了),因此我必须在ScrollPane的内容上设置EventHandler:

scrollPane_Content.setContent(vBox_Content);

    vBox_Content.setOnScroll(new EventHandler<ScrollEvent>() {
        @Override
        public void handle(ScrollEvent event) {
            double deltaY = event.getDeltaY()*6; // *6 to make the scrolling a bit faster
            double width = scrollPane_Content.getContent().getBoundsInLocal().getWidth();
            double vvalue = scrollPane_Content.getVvalue();
            scrollPane_Content.setVvalue(vvalue + -deltaY/width); // deltaY/width to make the scrolling equally fast regardless of the actual width of the component
        }
    });

这样做可以直接使用滚动条,也可以使用鼠标滚轮上下滚动。

希望这对寻求加快scrollPane上的滚动速度的其他人有所帮助。

关于java - 如何更改ScrollPane的滚动量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32739269/

10-12 00:36