【问题标题】:Javafx Disable Scrolling by Mousewheel in ScrollPaneJavafx 在 ScrollPane 中禁用鼠标滚轮滚动
【发布时间】:2014-12-13 17:28:22
【问题描述】:

有人知道如何在 ScrollPane 中禁用鼠标滚轮滚动吗?

【问题讨论】:

    标签: javafx mousewheel scrollpane


    【解决方案1】:

    以下对我有用:

        scrollPane.addEventFilter(ScrollEvent.ANY, new EventHandler<ScrollEvent>() {
            @Override
            public void handle(ScrollEvent event) {
                if (event.getDeltaY() > 0) {
                    zoomIn();
                } else {
                    zoomOut();
                }
                event.consume();
            }});
    

    您可能会发现您还需要以下内容:

    scrollPane.setOnScroll(new EventHandler<ScrollEvent>() {
        @Override
        public void handle(ScrollEvent event) {
            if (event.getDeltaY() > 0) {
                zoomIn();
            } else {
                zoomOut();
            }
            event.consume();
        }
    });
    

    我将上述详细说明添加到此线程中的另一个答案中,但据我所知,它尚未出现在公共提要中。所以,我把它粘贴在它自己的答案中。

    这个问题有点重复,但它首先出现在 Google 中,所以我正在回答它。上面的灵感是:

    Zooming in JavaFx: ScrollEvent is consumed when content size exceeds ScrollPane viewport

    【讨论】:

      【解决方案2】:

      我认为没有直接的解决方案。

      所以我会 add an event filter 到 ScrollPane 获取 SCROLL EventType 并使用每个事件。这应该可以防止任何鼠标生成的滚动事件被委托给 ScrollPane。

      【讨论】:

      • 好的,谢谢。这对我现在有帮助。但是,如果我想在滚动窗格内的元素上启用滚动呢?例如一个 TableView?
      • 您可以检查ScrollEvent 的事件目标并仅在符合您的条件时才使用它。
      • 我试过了,但事件目标是每次滚动窗格。 :(
      • Yeeeaaaahh,我解决了这个问题!解决方案是setClip()methode。这是漏洞解决方案:Rectangle clipRectangle = new Rectangle(); clipRectangle.widthProperty().bind(contentPane.widthProperty()); clipRectangle.heightProperty().bind(contentPane.heightProperty()); contentPane.setClip(clipRectangle);
      • @Studiosus 如果您找到了答案,您应该回答自己的问题。这有助于其他正在搜索此内容的人
      猜你喜欢
      • 2013-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多