2016-09-16 47 views
2

在JavaFX我有这样的事情: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%的高度(即不能移动它们)。基本上问题是,scrollpane似乎并不关心高度centreBox

我也尝试添加一组阅读一些有关它的API后:

Group group = new Group(scrollPane); 
mainHBox.getChildren().add(group); 

但仍然没有喜悦。

我认为这是与内容是动态生成的事实有关。如果我从一开始就将某些元素硬编码到那里,它似乎工作正常。

如何解决这个问题?

在此先感谢

+1

我只是写了一个简单的程序测试,并作为节点添加到它的内容我的ScrollPane正确的行为。请编辑您的问题并提供一个[MCVE](http://stackoverflow.com/help/mcve)来展示您的问题。 – VGR

回答

-1

尝试: 使用的ListView,而不是滚动窗格。

编辑: 为了动态填充列表的内容窗格:

HBox box[obj] = ...; // here I create a box based on obj 
+0

'mainBox'是位于一个Tab中的主容器,它位于TabPane中。不知道为什么我应该使用'ListView' ...为什么滚动窗格不按预期工作? –

+0

这应该是一个评论,而不是一个解决方案。 – user3437460