【发布时间】:2019-08-10 11:50:52
【问题描述】:
我有一个包含 16 个项目的 ListView。当我滚动默认 ListView ScrollBar(使用箭头或鼠标)时,它会滚动一半项目。
我需要的是滚动一项(单击箭头或用鼠标滚动时),这样列表就不会显示一半的项目。有没有办法做到这一点? 这是我的代码:
public void start(Stage primaryStage) throws IOException {
ListView<String> lstRequestOpt = new ListView<>();
List<String> x = new ArrayList<>();
for(int i = 0; i < 30; i++) {
x.add("item " + i);
}
ObservableList<String> items = FXCollections.observableArrayList(x);
lstRequestOpt.setItems(items);
Scene scene = new Scene(lstRequestOpt);
primaryStage.setScene(scene);
primaryStage.show();
}
这是输出图像: ListView with half items
我在这里想要实现的是元素显示完整,而不像他的图片:
- 滚动时
- 用鼠标移动滚动条时
- 单击滚动条中的箭头时
有什么办法吗?
更新:
我可以设法创建一个在使用滚动或箭头时打印某些内容的方法,即使它是最小的滚动。现在我需要找到一种方法来设置滚动中的移动值并将其与 ListView 集成。我会继续努力。代码如下:
for (Node node : lstRequestOpt.lookupAll(".scroll-bar")) {
if (node instanceof ScrollBar) {
final ScrollBar bar = (ScrollBar) node;
bar.valueProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> value, Number oldValue, Number newValue) {
if ((double) oldValue < (double) newValue) {
System.out.println("UP");
} else {
System.out.println("DOWN");
}
}
});
}
}
感谢所有帮助我的人。
【问题讨论】:
-
请提供一个minimal reproducible example 来说明问题。也就是说:基本上,您可以查找滚动条并设置其单位增量