我需要将“滚动条移动”侦听器添加到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());
});
使用滚动条滚动没有任何响应。
我怎么能抓住这样的事件?
答案 0 :(得分:3)
您可以使用scrollLeftProperty
属性
内容水平滚动的像素数。
要收听的垂直滚动内容的像素数。
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