JavaFX Formattierung im Label

Trèfle

Mitglied
Hallo zusammen,

für ein Programm, an welchem ich arbeite, muss ich mir durch ein Label die vorher und nachher Werte eines Objektes ausgeben lassen. Dazu sollen für alle Attribute der Attributname, der alte und der neue Wert jeweils untereinander aufgelistet werden. Ich versuche dies durch diesen String zu realisieren, den ich so formattiere:

Java:
aenderungen = aenderungen +  String.format("%-30s %-30s %-30s\n","Attribut","Wert Alt","Wert Neu");

Damit wie es in der Konsole aussieht bin ich zufrieden, das entspricht dem wie es eigentlich sein sollte:

o7oh6q.png


Wenn ich es dann allerdings durch Label.setText() Label schreiben will sieht es nicht mehr annähernd so schön aus.

2mdnvhx.png


Ich erkenne sogar worin das Problem liegt, selbst wenn ich leider keine Lösung dafür finde. Falls ein Wert kürzer als 30 zeichen ist wird eine "Spalte" durch meinen Code mit Leerzeichen aufgefüllt. In der Konsole scheinen Leerzeichen und übrige Zeichen dieselbe Breite zu haben, wodurch es so ordentlich aussieht. Im Label hingegen scheinen Leerzeichen schmäler zu sein als die Buchstaben, wodurch es zu dieser Verschiebung kommt.

Hat jemand eine Lösung für mich? Kann man das Label formattieren, so dass Leerzeichen dieselbe Breite haben wie Buchstaben? Oder kennt jemand eine alternative Lösung?

Ich bedanke mich bereits im Vorraus.

Liebe Grüße, Andy
 
Das liegt an den verwendeten Schriftfamilien. Versuch mal, eine Monospaced-Font für die Labels per label.setFont(Font.font("Monospaced", 12)); zu verwenden.

EDIT: Font-Ermittlung korrigiert.
 
Oder eben doch mehrere Labels, die in einem GridPane eingebettet sind, verwenden. das wäre sowieso die saubere Variante... Just sayin'...
 

Zurück
Oben