2016-01-28 71 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 
    }   
});