JavaFX TextArea滚动条移动事件

时间:2016-07-14 11:18:18

标签: java javafx scroll textarea

我需要将“滚动条移动”侦听器添加到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());
});

使用滚动条滚动没有任何响应。

我怎么能抓住这样的事件?

1 个答案:

答案 0 :(得分:3)

您可以使用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