JavaFX tableview滚动条事件未触发

JavaFX tableview滚动条事件未触发,java,javafx,tableview,scrollbar,Java,Javafx,Tableview,Scrollbar,我已经添加了一个事件处理程序来滚动到我的tableview中,但它只在我使用滚轮滚动时起作用,但当你用滚动条单击并拖动时,它也需要起作用。有什么想法吗?怎么了?我试着用不同的方法来举办这次活动,但都没有成功 这是我的密码: tableVw.addEventFilter(ScrollEvent.ANY, new EventHandler<ScrollEvent>() { @Override public void handle(ScrollEvent scrollEve

我已经添加了一个事件处理程序来滚动到我的tableview中,但它只在我使用滚轮滚动时起作用,但当你用滚动条单击并拖动时,它也需要起作用。有什么想法吗?怎么了?我试着用不同的方法来举办这次活动,但都没有成功

这是我的密码:

tableVw.addEventFilter(ScrollEvent.ANY, new EventHandler<ScrollEvent>() {
    @Override
    public void handle(ScrollEvent scrollEvent) {
        System.out.println("scrolling");
    }
});
tableVw.addEventFilter(ScrollEvent.ANY,neweventhandler()){
@凌驾
公共无效句柄(ScrollEvent ScrollEvent){
System.out.println(“滚动”);
}
});
感谢您的帮助,谢谢

谢谢你,詹姆斯。 有效的代码:

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

public void changed(可观察值)您应该添加更多信息。例如?当我单击滚动条并在表格中滚动时,文本“scrolling”(滚动)不会打印,但当我使用鼠标滚轮滚动时会打印。滚动事件是表示鼠标(或类似输入设备)滚动手势的低级事件.它们不代表语义上的“滚动动作”例如,与通过鼠标单击、拖动或键盘操作启动滚动的控件进行交互。我看不出有什么好的方法可以做到这一点。您可以执行查找以获取滚动条,并使用其
值属性注册侦听器,但这非常难看。另外,我想知道为什么您需要知道表何时滚动。这很简单可能有另一种方法可以完成您实际想要做的事情。这确实很难看,但这是让TableView正常工作的唯一方法。这不是最好的表实现。。。
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;
}