【问题标题】:Add listener on TableView ScrollBar在 TableView ScrollBar 上添加监听器
【发布时间】:2016-05-06 02:59:48
【问题描述】:

我想在我的 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 中添加项目时,滚动条会自动出现,我想添加一个侦听器以在我使用滚动条滚动时执行特定操作。

我找到的唯一听众:

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

... 仅当我使用鼠标滚轮滚动时才起作用或不起作用。

我该如何解决这个问题?

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

【问题讨论】:

  • 可能重复的外观here
  • 这篇文章中的解决方案仅在我使用滚轮滚动时才有效,而不是在我使用自动 TableView ScrollBar 滚动时有效。

标签: java user-interface events javafx tableview


【解决方案1】:

这是我遇到相同问题的解决方法。 滚动表格:

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

拖动滚动条(我也可以通过单击 TableView“标题”来获取排序事件)

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

【讨论】:

    猜你喜欢
    • 2016-04-20
    • 2018-06-26
    • 2018-05-03
    • 2013-07-20
    • 2018-08-30
    • 2020-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多