JavaFX TreeItem

GhostfaceChilla

Bekanntes Mitglied
Ich bin solangsam am Verzweifeln :(
Ich möchte gerne meine TreeView über CSS stylen. So nun habe ich vorher meiner TreeView in der fxml Datei eine Grafik übergeben, hat auch wunderbar geklappt, die Grafik wurde für jedes TreeItem angezeigt. Nun wollte ich das aber über CSS machen, weil auch meine ganzen Buttons über CSS gestylt sind.Nur klappt das einfach nicht. Ich hab folgendes in mein CSS file geschrieben:
Code:
#addressbookTree{
    -fx-graphic: url("../../resources/images/addressFolder.png");  
}
Aber es funktioniert nicht, ich könnte durchdrehen, habe das genauso bei meinen Buttons gemacht und da funktioniert das komischer Weise ohne Probleme und kann mir nicht vorstellen das ich jetzt für ein TreeItem einen komplett anderen Befehl brauche. Ich glaube das hat was damit zu tun das ich irgendwie nicht das TreeItem direkt ansprechen kann sondern das irgendwie über TreCell machen muss, aber ich hab keine Ahnung was ich da machen muss.Habe schon gegoogelt aber man findet ja relativ wenig zu Problemen mit JavaFx und rein gar nichts was FXML oder JavaFx mit CSS angeht.Hoffe jemand hier kann mir helfen.

-GhostfaceChilla-
 
Zuletzt bearbeitet:

dzim

Top Contributor
Najaaaaa. Ich nehme mal an, dass du die ID #addressbookTree dem Tree selbst zuordnest - und der hat kein Graphics-Node...
Du willst die TreeCell stylen. Dort sollte es gehen.
In der CSS-Doku findest du, dass TreeCell alle properties von IndexedCell besitzt und diese wiederum alle props von Cell. Und diese wiederum alle von Labeled - und dort findest du -fx-graphic!

Ohne es zu testen sollte es entweder genügen, wenn du diese ID den Cellen zuordnest
Code:
#addressbookTreeCell{
    -fx-graphic: url("../../resources/images/addressFolder.png");  
}

oder indem du wirklich imm CSS deine TreeCell veränderst.
Das ginge dann in etwa so:
Code:
.table-row-cell .table-cell {
	-fx-graphic: url("Achtung_icon_2.png");
}
Weil dann aber auch die "leeren" Zeilen diese Graphic bekommen würden, musst du dann noch irgend etwas, wie das hier machen:
Code:
.table-row-cell:empty .table-cell {
	-fx-border-width: 0px;
	-fx-graphic: null;
}

Ein Problem bleibst aber bestehen: ALLE Zellen bekommen dann das Icon. In dem Fall also wäre es wohl sinnvoll, nur die zweite CSS-Regel aufzunehmen und ansonsten den Zellen (oder Spalten???), die dein Icon haben sollen, eine wie ganz oben beschriebene ID zuzuweisen.

Grüsse,
Daniel

PS: Mir hat es enorm geholfen, die caspian.css aus der jfxrt.jar herauszuextrahieren und sie paralell mit einem geeigneten Editor als Vorlage zu verwenden. Ich habe daraus fast mehr gelernt, als aus der Dokumentation (ausser, dass die Doku die Abhängigkeiten übersichtlicher beschreibt (TableCell - IndexedCell - Cell - Labeled)).
 
Zuletzt bearbeitet:

GhostfaceChilla

Bekanntes Mitglied
Vielen Dank :)
Ja das habe ich mir schon gedacht das das was mit Cell zu tun hat. Aber wie kann ich das in der FXML definieren?Zurzeit sieht es so aus:
[XML]<TreeView fx:id="fileChooserTree">
<root>
<TreeItem fx:id="homenizerTree" value="Mein Homenizer" expanded="true" >
<children>
<TreeItem fx:id="addressbookTree" value="Adressbuch"
<TreeItem fx:id="dateTree" value="Termine"/>
<TreeItem fx:id="toDoTree" value="Aufgaben"/>
<TreeItem fx:id="financeTree" value="Finanzen"/>
</children>
</TreeItem>
</root>[/XML]
Jetzt müsste ich hingehen und eine Cell definieren, aber wie mache ich das in der FXML?Ich probiere immer alles soweit es geht aus dem Internet zu beziehen bevor ich fargen stelle, aber zu FXML findet man ja gar nichts :bahnhof:

-GhostfaceChilla-
 
Zuletzt bearbeitet:

dzim

Top Contributor
Ich hab vorhin erst bemerkt, dass du ja mit Trees, nicht Tables, arbeitest. Ich glaube nicht, dass es in dem Fall eine reine CSS-Lösung gibt. Ich denke, du musst schon eine CellFacotry o.ä. haben und dann in dieser der Zelle die o.g. ID zuordnen - oder gleich direkt den Graphic-Node manipulieren. Ich finde zwar CSS für's Styling wirklich toll, aber in dem Fall würde ich lieber den Weg über den Code gehen. Da ist man vielleicht auch etwas flexibler. Mit Trees kann ich dir ansonsten im Moment nicht gross helfen, weil es schon recht lange her ist, dass ich mal einen verwendet habe - da müsste ich mich auch erst mal wieder einfuchsen.
 

Ähnliche Java Themen


Oben