2016-01-28 72 views
0

我想在我的Tableview ScrollBar上添加監聽器,並且我沒有在JavaFX中找到此監聽器。在TableView ScrollBar上添加監聽器

這是我.FXML:

<?xml version="1.0" encoding="UTF-8"?> 

<?import java.lang.*?> 
<?import javafx.scene.control.*?> 
<?import javafx.scene.layout.*?> 
<?import javafx.scene.layout.BorderPane?> 
<?import javafx.scene.control.cell.*?> 
<?import javafx.collections.*?> 
<?import fxmltableview.*?> 

<BorderPane xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8.0.40" 
    onContextMenuRequested="#showContextMenu"> 
    <center> 
     <TableView fx:id="table" prefHeight="200.0" prefWidth="300.0" 
      BorderPane.alignment="CENTER" > 
      <columns> 
       <TableColumn text="Name"> 
       </TableColumn> 
       <TableColumn text="Latitude"> 
       </TableColumn> 
       <TableColumn text="Longitude"> 
       </TableColumn> 
       <TableColumn text="Label"> 
       </TableColumn> 
       <TableColumn text="Label_two"> 
       </TableColumn> 
       <TableColumn text="Code"> 
       </TableColumn> 
       <TableColumn text="Code_two"> 
       </TableColumn> 
      </columns> 
     </TableView> 
    </center> 
</BorderPane> 

,當我在TableView中添加項目滾動條會自動出現,而且我想添加一個監聽器,當我蒙山滾動滾動條做的具體行動。

唯一的聽衆,我發現:

table.setOnScroll(... 
table.setOnScrollTo(... 

...不起作用,或者,如果我用鼠標滾輪滾動才能正常工作。

我該如何解決這個問題?

編輯:我捕獲了TableView中的所有事件,以查看當我滾動滾動條並顯然是傳播的MouseDragged事件時,必須偵聽哪個事件。

+0

可能重複一下[這裏](HTTP:/ /stackoverflow.com/questions/23789525/onscroll-listener-does-not-working-in-tableview-in-javafx-2) – Inge

+0

在這篇文章中的解決方案只有當我滾動滾輪,而不是如果我滾動自動TableView ScrollBar。 – Doremus

回答

2

這是我的解決方法與相同的問題。 滾動表:

table.addEventFilter(ScrollEvent.ANY, event -> 
    PerformYourActionHere 
); 

拖動滾動條(我用它來與點擊TableView中「頭」來獲得排序事件以及)

table.addEventFilter(MouseEvent.MOUSE_CLICKED, event -> { 
    if ((event.getTarget() instanceof TableColumnHeader) | event.isDragDetect()) { 
     PerformYourActionHere 
    }   
});