我正在徘徊,是否有一个属性,可以附加一个侦听器,表示“list视图开始显示ScrollBar时”的操作?
问题是,我有一个输出到ListView,并且在某个时候ListView的scrollBar触发器。我希望捕获该事件并滚动到底部,以便ListView对象的下一个添加内容将自动滚动到底部。
我确实理解,我可以使用侦听器进行项更改,但当我决定向上滚动时,它将不会在添加项后立即回滚到最后一个位置,但我希望保留此行为。
发布于 2018-03-22 16:42:34
试试这个:
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
中的项之后添加此代码
发布于 2018-03-22 10:44:28
也许这能帮你:
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不再向下滚动,直到用户滚动到列表视图的底部(这是一个行为)
https://stackoverflow.com/questions/49425888
复制相似问题