Unterschiede

Hier werden die Unterschiede zwischen der gewählten und der aktuellen Version gezeigt.

javafx:accordion-all-open 2015/03/18 13:01 javafx:accordion-all-open 2020/01/22 20:59 aktuell
Zeile 1: Zeile 1:
[[javafx:javafx|JavaFX]]\\ [[javafx:javafx|JavaFX]]\\
====== Accordion, alle offen ====== ====== Accordion, alle offen ======
-Das JavaFX Accordion kann immer nur ein Element zur Zeit öffnen. Mit wenig Aufwand lässt sich ein eignes Accordion entwickeln, bei welchem mehrere/alle Elemente offen sein können:\\+Das JavaFX Accordion kann immer nur ein Element zur Zeit öffnen. Mit wenig Aufwand lässt sich ein eigenes Accordion entwickeln, bei welchem mehrere/alle Elemente offen sein können:\\
{{:javafx:accordion-all-open.png|}} {{:javafx:accordion-all-open.png|}}
\\ \\
Zeile 24: Zeile 24:
</html> </html>
\\ \\
 +Eine einfache Variante, die auf das Wesentliche beschränkt ist:\\
<code java> <code java>
package com.sowas.javawiki.javafx; package com.sowas.javawiki.javafx;
Zeile 55: Zeile 56:
  }   }
} }
 +</code>
 +\\
 +\\
 +Eine Accordion-Klasse, die (ein bisschen) kompatibel zur JavaFX-Klasse Accordion ist:\\
 +<code java>
 +package com.sowas.javawiki.javafx;
 +
 +import javafx.collections.FXCollections;
 +import javafx.collections.ListChangeListener;
 +import javafx.collections.ObservableList;
 +import javafx.scene.control.ScrollPane;
 +import javafx.scene.control.TitledPane;
 +import javafx.scene.layout.VBox;
 +
 +import java.util.List;
 +
 +public class MultiOpenAccordion extends ScrollPane {
 +  private ObservableList<TitledPane> panes = FXCollections.observableArrayList();
 +  VBox vBox = new VBox();
 +
 +  public NavigatorAccordion() {
 +      // Falls keine horizontale Scrollleiste gewünscht ist, muss die Breite der VBox
 +      // and die ScrollPane angepasst werden:
 +      widthProperty().addListener(new ChangeListener<Number>() {
 +        @Override
 +        public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
 +            vBox.setMinWidth(newValue.doubleValue());
 +            vBox.setPrefWidth(newValue.doubleValue());
 +            vBox.setMaxWidth(newValue.doubleValue());
 +        }
 +      });
 +      setHbarPolicy(ScrollBarPolicy.NEVER);
 +
 +      // Änderungen an der Liste werden hier behandelt:
 +      panes.addListener((ListChangeListener<TitledPane>) c -> {
 +        while (c.next()) {
 +            if (c.wasAdded()) {
 +              vBox.getChildren().addAll(c.getAddedSubList());
 +            }
 +            if (c.wasRemoved()) {
 +              vBox.getChildren().removeAll(c.getRemoved());
 +            }
 +            if (c.wasReplaced()) {
 +            }
 +            if (c.wasUpdated()) {
 +            }
 +            if (c.wasPermutated()) {
 +            }
 +        }
 +      });
 +      setContent(vBox);
 +  }
 +
 +  public List<TitledPane> getPanes() {
 +      return panes;
 +  }
 +
 +  public void setExpandedPane(TitledPane expandedPane) {
 +      expandedPane.setExpanded(true);
 +  }
 +}
 +</code>
 +\\
 +Eine Verwendung der Klasse könnte so aussehen:\\
 +<code java>
 +MultiOpenAccordion moAccordion = new MultiOpenAccordion();
 +moAccordion.add(new TitledPane("Test 1", new Label("1")));
 +moAccordion.add(new TitledPane("Test 2", new Label("2")));
 +moAccordion.add(new TitledPane("Test 3", new Label("3")));
</code> </code>
\\ \\
Zeile 60: Zeile 130:
Stichworte: Stichworte:
<code> <code>
-JavaFX Accordion, alle offen, Beispiel+JavaFX Accordion, alle offen, mehere gleichzeitig offen, Beispiel
</code> </code>

Eigene Werkzeuge
Werkzeuge

gratis Counter by GOWEB
seit 9.10.2007