在TableView ScrollBar

时间:2016-01-28 16:15:48

标签: java user-interface events javafx tableview

我想在Tableview ScrollBar上添加一个监听器,我在JavaFX中找不到这个监听器。

这是我的.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中添加项目时,ScrollBar会自动出现,我想在我滚动滚动条时添加一个监听器来执行特定操作。

我发现的唯一听众:

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

...只有在我使用鼠标滚轮滚动时才能工作或工作。

我该如何解决这个问题?

编辑:我在TableView中捕获了所有事件,以查看当我使用滚动条滚动并且显然是传播的MouseDragged事件时我必须要监听的事件。

1 个答案:

答案 0 :(得分:3)

这是我的解决方法,同样的问题。 滚动表:

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

拖动滚动条(我使用它同时点击TableView&#34;标题&#34;以获得排序事件)

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