# Schriftgröße automatisch an JLabel anpassen



## H2SO4 (20. Apr 2009)

Gibt es eine Möglichkeit, dass sich der Text in einem JLabel automatisch an seine Größe anpasst?


----------



## Schandro (20. Apr 2009)

ich glaube nicht, aber du kannst dir ja mithilfe der Klasse FontMetrics einen passenden Algorithmus ausdenken


----------



## H2SO4 (20. Apr 2009)

Kannst du mir vielleciht noch nen Tipp geben? Habe es bis jetzt nicht hingekriegt.


----------



## Gast2 (20. Apr 2009)

Was genau??? Code???


----------



## H2SO4 (20. Apr 2009)

Also, bisher setze ich die Schriftgröße manuel. Alle anderen Versuche habe ich verworfen, weil nicht funktionstüchtig. Was muss man nun ändern, damit sich die Textgröße, insbesondere die Höhe an die Labelgröße anpasst?


```
private void initComponents() {
	this.setLayout(new GridLayout(1, 3));
		
	this.wazaari = new JLabel("W 0");
	this.wazaari.setFont(new Font("Arial", Font.BOLD, +150));
	this.wazaari.setHorizontalAlignment(JLabel.CENTER);
	this.add(this.wazaari);
		
	this.yuko = new JLabel("Y 0");
	this.yuko.setFont(new Font("Arial", Font.BOLD, +150));
	this.yuko.setHorizontalAlignment(JLabel.CENTER);
	this.add(this.yuko);
		
	this.shido = new JLabel("S 0");
	this.shido.setFont(new Font("Arial", Font.BOLD, +150));
	this.shido.setHorizontalAlignment(JLabel.CENTER);
	this.add(this.shido);
}
```


----------



## Schandro (20. Apr 2009)

Ich fass mal zusammen was du brauchst für den Algorithmus:

- Er muss bei jeder Größenänderung des Labels aufgerufen werden (siehe ComponentListener)
- Er muss den aktuellen Font mit unterschiedlichen schriftgrößen erstellen (schleife...) und mithilfe der Methoden stringWidth und getHeight eines FontMetrics Objectes des jeweiligen Fonts gucken, ob es zur aktuellen size des Components passt.
- Das Endergebnis ist der Font mit der schriftgröße, die am besten zur aktuellen Größe des Components passt.

kleiner Tipp: API benutzen.


----------



## cover1012 (20. Apr 2009)

Also ganz oberflächlich würd ich mal sagen:
Füge deinem JLabel einen Listener hinzu, der die Größe abfragt. Alternativ könnte das auch in einem eigenen Thread passieren. Mit _setFont() _kannst du dann auf Änderungen reagieren.

EDIT: Schandro war schneller und präziser :toll:


----------

