在JavaFX中,我有类似的东西:
VBox centreBox = new VBox();
ScrollPane scrollPane = new ScrollPane(centreBox);
mainHBox.getChildren().add(scrollPane);
然后当用户点击按钮时,会触发一个动作:
button.setOnMouseClicked(event -> {
for(Object obj : list) {
HBox box = ...; // here I create a box based on obj
centreBox.getChildren().add(box);
}
});
问题是list
很长,最终将centreBox
的高度扩展到超出窗口大小。但是,滚动条永远不会被触发。
我尝试将滚动条策略设置为始终,但是条形总是保持在高度的100%(即不能移动它们)。基本上问题是滚动窗格似乎并不关心高度centreBox
。
我还尝试在API上阅读有关它的内容后添加一个组:
Group group = new Group(scrollPane);
mainHBox.getChildren().add(group);
但仍然没有快乐。
我认为这与内容是动态生成的事实有关。如果我从一开始就将一些元素硬编码到那里就好了。
如何解决这个问题?
提前致谢
答案 0 :(得分:-1)
尝试: 使用ListView而不是ScrollPane。
编辑: 为了使用列表内容动态填充窗格:
HBox box[obj] = ...; // here I create a box based on obj