2016-07-14 226 views
1

我需要将“滚动条移动”侦听器添加到TextAreaJavaFX TextArea滚动条移动事件

但是,当我加入

textArea.addEventFilter(ScrollEvent.ANY, (x) -> System.out.println(textArea.getScrollTop())); 

它只能听使用鼠标滚轮触发的事件 - 鼠标滚轮滚动。

当我用鼠标选择滚动条时,将其上下拖动,不会捕捉任何事件。

我已经尝试不同的方法

textArea.addEventFilter(ActionEvent.ANY, (x) -> System.out.println(textArea.getScrollTop())); 
textArea.setOnScroll(...); 
textArea.setOnScrollStarted(...); 
textArea.setOnScrollFinished(...); 
textArea.textProperty().addListener((observable, oldValue, newValue) -> { 
    System.out.println("> " + textArea.getScrollTop()); 
}); 

没有什么是响应使用滚动条滚动。

我该如何抓住这样的事件?

回答

2

可以使用scrollLeftProperty财产

由内容水平滚动的像素数。

scrollTopProperty属性

由其中内容被垂直滚动的像素数。

TextArea

被倾听:

TextArea ta = new TextArea(); 
ta.scrollTopProperty().addListener((obs, oldVal, newVal) -> { 
    System.out.println("Position from top: " + newVal); 
}); 

ta.scrollLeftProperty().addListener((obs, oldVal, newVal) -> { 
    System.out.println("Position from left: " + newVal); 
}); 

输出示例:

Position from top: 36.0 
Position from left: 16.6046511627907 
+1

非常感谢你。它正在工作。 – jmt