2016-07-14 229 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