JavaFX - проблема с несколькими заголовками - PullRequest
0 голосов
/ 05 июля 2019

Я знаю, что невозможно открыть несколько титулованных панелей в аккордеоне.Поэтому я попытался реализовать логику, используя заголовочные панели и VBox.То, чего я хочу добиться, - это чтобы каждая титулованная панель занимала всю высоту VBox после его расширения.

Это "работает", но у меня проблемы с воспроизведением анимации.Вот что у меня есть (допустим, у меня только 2 титулованных стекла):

main.fxml:

<HBox fx:id="main">
     <children>
        <VBox HBox.hgrow="ALWAYS">
           <children>
               <TitledPane onMouseClicked="#expandTitle" fx:id="pane1" VBox.vgrow="ALWAYS">
                 <content>
                   <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0" />
                 </content>
               </TitledPane>
               <TitledPane onMouseClicked="#expandTitle" fx:id="pane2" expanded="false" VBox.vgrow="ALWAYS">
                 <content>
                   <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0" />
                 </content>
               </TitledPane>
           </children>
        </VBox>
</children></HBox>

Controller.java:

public class Controller {
    @FXML
    private javafx.scene.layout.HBox main;
    @FXML
    private javafx.scene.control.TitledPane pane1;
    @FXML
    private javafx.scene.control.TitledPane pane2;

    @FXML
    private void expandTitle(MouseEvent evt){
        TitledPane clickTarget = (TitledPane) evt.getSource();
        TitledPane otherTarget = clickTarget == pane1 ? pane2 : pane1;

        otherTarget.setExpanded(!clickTarget.expandedProperty().getValue());

        if(otherTarget.expandedProperty().getValue()){
            otherTarget.setMaxHeight(main.getHeight());
            clickTarget.setMaxHeight(0);
        } else {
            clickTarget.setMaxHeight(main.getHeight());
            otherTarget.setMaxHeight(0);
        }
    }

}

Я пытался setMaxHeight, setPrefHeight, все они имеют одинаковый результат.Вот как это выглядит против того, как я ожидаю, что это будет выглядеть:

enter image description here

...