JavaFX tableview滚动条事件未触发

时间:2016-09-07 23:46:09

标签: java javafx tableview scrollbar

我已经添加了一个用于滚动到我的tableview的事件处理程序,但它仅在我使用滚轮滚动时才有效,但是当你单击并拖动滚动条时我需要它才能工作。任何想法都错了吗?我尝试过为事件使用不同的方法,但没有一种方法有效。

继承我的代码:

tableVw.addEventFilter(ScrollEvent.ANY, new EventHandler<ScrollEvent>() {
    @Override
    public void handle(ScrollEvent scrollEvent) {
        System.out.println("scrolling");
    }
});

感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:0)

谢谢James_D。 有效的代码:

scrollbar.valueProperty().addListener(new ChangeListener<Number>() {
    @Override
    public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
        // Stuff with scrollbar here
    }
});

要获取我使用的滚动条:

public static ScrollBar getVerticalScrollbar(TableView<?> table) {
    ScrollBar result = null;
    for(Node n : table.lookupAll(".scroll-bar")) {
        if(n instanceof ScrollBar) {
            ScrollBar bar = (ScrollBar) n;
            if(bar.getOrientation().equals(Orientation.VERTICAL)) {
                result = bar;
            }
        }
    }
    return result;
}

我不知道它是否是最佳解决方案,但它有效。