我想在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事件时我必须要监听的事件。答案 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
}
});