2016-09-16 49 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