首页 新闻 会员 周边

javafx tableview 中禁用鼠标滑轮事件

0
[待解决问题]

javafx tableview 中禁用鼠标滑轮事件,怎么实现?
找到一个setOnScroll 方法但是不生效~~

队长给我球。的主页 队长给我球。 | 菜鸟二级 | 园豆:324
提问于:2018-09-06 17:22
< >
分享
所有回答(1)
0

如果你想在JavaFX TableView中禁用鼠标滑轮事件,可以使用以下两种方法之一:

通过在TableView上添加一个事件过滤器来阻止滚动事件的传递:

java

tableView.addEventFilter(ScrollEvent.ANY, e -> e.consume());

通过从TableView的Skin中获取它的ScrollPane并禁用它的滚动条来实现:

java

tableView.skinProperty().addListener((obs, oldSkin, newSkin) -> {
if (newSkin != null) {
ScrollPane scrollPane = (ScrollPane) newSkin.getChildren().get(0);
scrollPane.setVbarPolicy(ScrollBarPolicy.NEVER);
scrollPane.setHbarPolicy(ScrollBarPolicy.NEVER);
}
});

第一种方法是将一个事件过滤器添加到TableView上,当滚动事件被触发时,该事件过滤器会截获它并将其消耗掉。这意味着滚动事件不会再向下传递给子节点。

第二种方法是从TableView的皮肤中获取到它内部的ScrollPane,然后禁用垂直和水平滚动条。这将防止用户使用鼠标滚轮来滚动TableView,但是你仍然可以以编程方式滚动TableView。

你可能已经尝试了第一种方法,但它不起作用的原因可能是因为有其他的事件监听器与此冲突了。你可以通过把setOnScroll()方法置为空来禁用它。但是,这种方法不太可靠,并且在使用了多个ScrollPane的情况下可能会出现问题。建议使用上述其中一种方法进行禁用。

三号小玩家 | 园豆:113 (初学一级) | 2023-05-20 11:06
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册