JavaFx-css-TreeView
Bin ich schaffen möchte-element suchen und verhält sich wie unten gezeigt.
Es dunkle hintergrund und die top-Liste der 4 Elemente: "biblioteki", "Analiza" und so weiter. Henne klicken wir auf eine von Ihnen, die Liste wird erweitert und das Element und seine Kinder bekommt Licht dunklen hintergrund. Zusätzlich ausgewählte Element aus der child-Liste bekommt verschiedene schriftart (Fett und weiß). Auch dort konnte nur ein Element erweitert in der Zeit.
Also habe ich herausfinden, dass dies TreeView-Verhalten mit der richtigen Stile angewendet.
Ich bekomme es funktioniert mit folgenden code:
TreeView<TabMenuElement> treeView = new TreeView<>(treeRoot);
treeView.setCellFactory(tv -> new TreeCell<TabMenuElement>() {
@Override
public void updateItem(TabMenuElement item, boolean empty) {
super.updateItem(item, empty);
setDisclosureNode(null);
if (empty) {
setText("");
setGraphic(null);
} else {
setText(item.getName()); //appropriate text for item
if (item.getIv() != null) {
setGraphic(item.getIv());
}
}
}
});
treeView.setShowRoot(false);
TabMenuElement Methode, getIV zu erhalten Bildansicht (Symbol), wenn es zu definieren, die für dieses elemnt und getName erhalten text angezeigt werden. Für jetzt sieht es aus wie diese
Also ich habe folgende Probleme:
- wie die schriftart zu ändern, nur auf ausgewählten Element im TreeView?
- wie das einrichten den hintergrund auf den ausgewählten sub-Baum?
- wie Sie erzwingen, dass bei den meisten ein Teilbaum erweitert werden könnte
- wie setzen größere Größe zu top-level-Elemente?
InformationsquelleAutor Wojtek | 2015-06-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
In Ihrer css-Datei definieren Sie die schriftart für
.tree-cell:selected
:Ist das ein wenig schwierig. Sie wollen die Hintergründe einer erweiterten Knoten, und jeder Knoten, dessen Eltern ist nicht die Wurzel, anders zu sein (das ist nicht, wie Sie formuliert ist, aber ich denke, es ist logisch äquivalent). Eine erweiterte Knoten eine CSS-pseudoclass schon. Für die "Eltern ist nicht die Wurzel", die Sie benötigen, definieren Sie Ihre eigenen pseudoclass:
Nun beobachten, die
treeItem
- Eigenschaft der Zelle, und aktualisieren Sie die pseudoclass Zustand, wenn es änderungen:Nun in der CSS-Datei, die Sie tun können,
Fügen Sie den folgenden
ChangeListener
zu jeder IhrerTreeItem
's erweiterte Eigenschaften:(Oder die Schriftgröße zu ändern, oder ähnliches.)
Hier ein komplettes Beispiel:
mit Stil-einzigartige-erweitert-Baum.css:
Getestet habe ich dein Beispiel und es verursacht seltsames problem Hinweis: für den test habe ich nur kopiert 1:1 Ihr *.java-und *.css-Dateien. In meinem Fall problem sichtbar ist, fast jedes mal bei der app muss ich versuchen es paar mal und es ist nicht immer sichtbar. Hier sind die Schritte zum reproduzieren: 1. Starten Sie Die Anwendung 2. Erweitern untersten Teilbaum 3. erhöhen Sie die Größe der Fenster vertikal (bis zu Bildschirmhöhe) 4. reduzieren Sie die Größe des Fensters senkrecht zur anfänglichen Größe 5. Wieder erhöhen Größe der Fenster-vertikal (bis zu Bildschirmhöhe). 6. Jetzt versuchen einige Male zu erweitern 3toplevel und wieder 4toplevel - Ergebnis ist leichter-Leiste sehen Sie unten die Baum-Ansicht
InformationsquelleAutor James_D
Ich dachte von mir selbst, wie Sie auf single klicken Sie auf Strukturansicht:
speziell der Teil mit setOnMouseClicked.
Auch mit der gleichen Einrückung für alle Knoten getan werden könnte, in diesem Fall durch Einstellung in
Gut, das ist für meinen Fall, wo die Symbole für die top-level-element die Breite 22. Dann habe ich nur eine sub-Ebene und da ich die gleiche ident.
Wenn Sie wollen einfach nur in der gesamten Struktur die gleiche Gedankenstrich ohne icsons es ist genug, um Sie indet auf 0 für alle .Baum-Zelle.
InformationsquelleAutor Wojtek