首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >滚动显示上的JavaFX ListView

滚动显示上的JavaFX ListView
EN

Stack Overflow用户
提问于 2018-03-22 10:12:15
回答 2查看 2.2K关注 0票数 1

我正在徘徊,是否有一个属性,可以附加一个侦听器,表示“list视图开始显示ScrollBar时”的操作?

问题是,我有一个输出到ListView,并且在某个时候ListView的scrollBar触发器。我希望捕获该事件并滚动到底部,以便ListView对象的下一个添加内容将自动滚动到底部。

我确实理解,我可以使用侦听器进行项更改,但当我决定向上滚动时,它将不会在添加项后立即回滚到最后一个位置,但我希望保留此行为。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-22 16:42:34

试试这个:

代码语言:javascript
运行
复制
for (Node node : listView.lookupAll(".scroll-bar")) {
    if (node instanceof ScrollBar) {
        ScrollBar scrollBar = (ScrollBar) node;
        scrollBar.visibleProperty().addListener((observable, oldValue, newValue) -> {
            System.out.println(String.format("%s ScrollBar Visible Property Changed From: %s To: %s", scrollBar.getOrientation(), oldValue, newValue));
        });
    }
}

输出:

垂直ScrollBar可见属性从: false更改为: true

注意:为了避免,应该在设置ListView中的项之后添加此代码

票数 2
EN

Stack Overflow用户

发布于 2018-03-22 10:44:28

也许这能帮你:

代码语言:javascript
运行
复制
  private boolean scroll = true;
  private ListView<String> listView = new ListView<>();

  Constructor(){
    outputListView.addEventFilter(ScrollEvent.ANY, (e) ->{ //get every scroll event
      if(e.getTextDeltaY() > 0){ //set Scroll event to false when the user scrolls up
        scroll = false;
      }
    });
  }

  public void addToListView(String s){
    listView.getItems().add(s);
    if(scroll)
        listView.scrollTo(listView.getItems().size() -1 );
  }

在本例中,当滚动条显示时,listView滚动,但当用户向上滚动时,listView不再向下滚动,直到用户滚动到列表视图的底部(这是一个行为)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49425888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档