Text eines TreeItem einfärben

godi

Aktives Mitglied
Hallo,

ist es möglich in JavaFX2 einem TreeItem eine Farbe zu übergeben so das der Text im Baum diese Farbe annimmt?

godi
 

AngryDeveloper

Bekanntes Mitglied
Wenn du dir die API über TreeItem durchliest, wirst du hierauf stoßen:
Note however that a TreeItem is not a Node, and therefore no visual events will be fired on the TreeItem. To get these events, it is necessary to add relevant observers to the TreeCell instances (via a custom cell factory - see the Cell class documentation for more details).
[TreeItem]

TreeItem ist also nur das Model.

Für die Views sind dann Cells zuständig:
Cell
 

godi

Aktives Mitglied
Ok, jetzt weiß ich für was die CellFactory gut ist. ;)

Also das einfärben funktioniert schon mal ganz gut.
Dazu habe ich mal das Beispiel 14.3 aus der JavaFX2 Dokumentation hergenommen und in der Klasse TextFieldTreeCellImpl in der Methode updateItem(), setTextFill(Color.RED); hinzugefügt.

Da man aber jetzt den selektierten Text sehr schwer lesen kann da dieser Blau umrandet ist würde ich diesen gerne weiß setzen wenn er selektiert ist. So wie beim originalem Tree.
Dazu habe ich die Methode updateSelected hinzugefügt und dort den Text auf weiß gesetzt.
Wenn jetzt aber ein anderer Eintrag selektiert wird dann bleibt der vorhergehende Eintrag auf weiß und geht nicht mehr in die ursprüngliche Farbe zurück.

Wie kann ich jetzt dem Eintrag die ursprüngliche Farbe zurückgeben? ???:L

godi
 

godi

Aktives Mitglied
Anscheinend war es zu leicht das ich gleich draufgekommen bin. ;)

Da ich in der updateSelected Methode auf das Item zugreifen kann, kann ich ja dort wieder die alte Farbe auslesen. Somit beschränkt sich die updateSelected Methode auf folgenden Code:

Java:
@Override
		public void updateSelected(boolean arg0) {			
			super.updateSelected(arg0);
			setTextFill(arg0 ? Color.WHITE : getItem().getColor());			
		}

godi
 

AngryDeveloper

Bekanntes Mitglied
Ich würde allerdings empfehlen das ganze über CSS zu machen. Das ist wesentlich flexibler und du kannst in Zukunft auch verschiedene Styles anbieten.
 

godi

Aktives Mitglied
Ich würde allerdings empfehlen das ganze über CSS zu machen. Das ist wesentlich flexibler und du kannst in Zukunft auch verschiedene Styles anbieten.

Ja nur kenne ich mich mit CSS gar nicht aus und in JavaFX arbeite ich mich gerade erst ein bzw mache ich überhaupt erst mein erstes sinnvolles Java - Projekt.
=> ich glaube das würde mich ein wenig überfordern oder?

Aber in dem Tree Beispiel von oben wird die Farbe eh in den Objekten die in dem Tree eingefügt werden hinterlegt.
Diese können dann vom Benutzer je nach Objekttype eingestellt werden.
 

miasma

Aktives Mitglied
Nice, endlich generics für ein TreeModel (bei Swing ja immernoch Object-Referenzen wegen Rückwärtskompatibilität). Wie ist das jetzt eigentlich, kann man JavaFX in Swing einbetten? Bzw. wie stellt man eine Swing GUI am besten auf JavaFX um ohne wirklich alles neu machen zu müssen? Habe in Swing schon die processing-library eingebettet und einige "Views" basieren auf dem JApplet was immernoch Probleme bereitet zwecks heavyweight vs. lightweight... erst mit irgendeiner JVM-Option um den layout-Algorithmus in Swing zu ändern ging es einigermaßen. Nur resizen ist übel... aber deswegen will ich mir ja eigentlich nicht noch mehr Probleme einhandeln ;-)

Will aber definitiv in Zukunft JavaFX verwenden aber die jeweiligen Swing-Views/Processing-Views dennoch weiterverwenden, geht das?

Viele Grüße,
Johannes
 

miasma

Aktives Mitglied
BTW: Wird JavaFX jetzt offiziell als Swing-Nachfolger gesehen? Auf der Swing-Mailingliste gibts ja immernoch ab und an commits, könnten aber auch nur noch bugfixes sein, keine Ahnung ;-)
 
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben