1

我对 JavaFx 比较陌生,我需要帮助来让 Vbox 随着节点的添加而增长。

我在 ScrollPane 中放置了一个 VBox。当它们进入时,VBox 会被 TitledPanes 填满。但是一旦 TitledPanes 填满了分配给 Vbox 的空间,TitledPanes 就会开始重叠。理想情况下,我希望 Vbox 自行调整大小并使用 ScrollPane 进行导航。

我将 Vbox 最大高度设置为USE_COMPUTED_SIZE. 我在 ScrollPane 中添加了一个监听器来监听 VBox 大小的变化,但没有运气。有什么建议么?

scrollPane.vvalueProperty().addListener(new ChangeListener<Number>() {
    public void changed(ObservableValue<? extends Number> ov,
            Number old_val, Number new_val) {
        vBox.setLayoutY(-new_val.doubleValue());
    }
});
4

1 回答 1

0

VBox您使用 a而不是a 有什么原因Accordion吗?使用 anAccordion您可以使用 aListChangeListener检查数量的变化TitledPane,然后调整Accordion添加或删除项目的大小:

accordion.getPanes().addListener(new ListChangeListener<Item>() {
     public void onChanged(Change<tem> c) {
         while (c.next()) {
             if(c.wasAdded() || c.wasRemoved){
                 //resize Accordion in dependency of the vvalue of your scrollpane
             }
         }
     });

对于 a VBox,原则应该仍然有效:

vbox.getChildren().addListener(new ListChangeListener<Item>() {
     public void onChanged(Change<tem> c) {
         while (c.next()) {
             if(c.wasAdded() || c.wasRemoved){
                 //rezise VBox in dependency of the vvalue of your scrollpane
             }
         }
     });

基于

于 2016-07-17T10:02:14.130 回答