JavaFX Text oder Label benutzen

Tom299

Bekanntes Mitglied
Hi,

ich stell mir gerade die Frage, ob ich Label oder Text in meinen Masken nutzen soll. In Swing gabs ja nur ein Label, aber in JavaFX gibts ja auch die Text-Node.

Bei einfachen Masken, wo z.B. vor einem Textfield eine Beschriftung steht, nehm ich da Text oder doch besser Label?

Ich habe bei Stackowerflow gelesen, daß Label viel mehr Stylemöglichkeiten als Text hat. Aber wenn ich das nicht groß stylen muß (außer Schriftart, Schriftfarbe und Schriftgröße), dann bin ich mit Text doch gut bedient. Oder was spräche dafür, doch Label zu benutzen?

Hab in einigen meiner Masken Label, in anderen Text benutzt und würde das gerne vereinheitlichen.

Was benutzt ihr in euren Masken?
 
Um im Swing-Kontext zu sprechen:
Text < --- > g.drawString
Label < --- > JLabel

Text an sich ist ein Shape und Label ein Control. Wenn du dir die API-Doku ansiehst wirst du feststellen, dass Label den String verwaltet (an die Größe anpasst oder String abschneidet, etc.). Text ist wirklich der Text und kontrolliert den String den er enthält nicht.
Also wenn du Masken baust, würde ich immer Labels verwenden, da es gewisse Vorteile (z.B. das Property labelFor, um andere Nodes zu "benennen") mit sich bringt.
 
Ich hab gerade mal im Test ein Label neben den Text gesetzt. Beide sind Arial Bold 16 und haben in der AnchorPane.topAnchor="320.0". Der Text vom Label sieht blasser aus, eher dunkelgrau anstatt schwarz und das Label sitzt auch etwas tiefer als der Text. Ok, das Positionieren ist jetzt kein Thema, kann man ja anpassen, aber wieso ist die Schrift blasser? Im Gegensatz dazu erscheint mir die Schrift im Label etwas feiner zu sein, beim Text kann man beim "K" einen kleinen Treppeneffekt erkennen.
 

Anhänge

  • kommissionen-label-text-test.png
    kommissionen-label-text-test.png
    8,2 KB · Aufrufe: 42
Es liegt wahrscheinlich daran, wie gerendert wird. Wie schon gesagt Text ist eine Shape (die bei Canvas zeichnen verwendet wird) und Label eine Control. Was wie genau im Hintergrund läuft, müsstest du im Developer-Forum erfragen.
 
Die Default-Farbe im SceneBuilder ist Black, dafür wird im FXML kein Eintrag generiert. Wenn ich jetzt aber explizit die Farbe mit textFill="#000000" auf schwarz setze, sieht es im Label auch schwarz aus. Vielleicht bilde ich mir das nur ein, aber ich finde, es sieht so wirklich dunkler aus, genau wie beim Text 🙄
 

Zurück
Oben