# setTitle() Titel zentrieren



## BlubBlub (26. Okt 2010)

Hi ich wollte den Titel in der Titelleiste zentrieren oder zumindest mit dem Tabulator verrücken.
Doch seltsamerweise funktioniert das mit dem Tabulator nicht.


```
String filename = "Dokument1";
		   setTitle(" \t " + filename + " MyEditor");
```

woran liegt das? 
Wenn ich 

```
System.out.println("\t bla");
```
schreibe dann funktioniert es doch.

und 

```
String filename = "Dokument1";
		   setTitle("                            " + filename + " MyEditor");
```
funktioniert auch.


----------



## Gast2 (26. Okt 2010)

Evtl. unterstützt dein OS keine Tabs im Fenstertitle? :rtfm:


----------



## BlubBlub (26. Okt 2010)

ok... und weiß vielleicht jemand wie man den text in der mitte des fenstertitels zentrieren kann unabhängig von der fenstergröße?


----------



## Volvagia (26. Okt 2010)

Das ist vielleicht nicht LnF- bzw. OS-Save und nicht unbedingt hübsch, aber könntest damit mal rumexperimentieren:


```
import java.awt.Component;

import javax.swing.JFrame;
import javax.swing.JLabel;

public class Frame extends JFrame
{
	private static final long serialVersionUID = 1L;
	
	private static final Component CENTER_TITEL_COMP = new JLabel();
	private static final String CENTER_TITEL_SPACE = " ";
	private static final StringBuilder CENTER_TITEL_BUILDER = new StringBuilder();
	
	public synchronized void setCenteredTitle(String title)
	{
		int width = getWidth();
		int stringWidth = CENTER_TITEL_COMP.getFontMetrics(CENTER_TITEL_COMP.getFont()).stringWidth(title);
		int spaceWidth = CENTER_TITEL_COMP.getFontMetrics(CENTER_TITEL_COMP.getFont()).stringWidth(
				CENTER_TITEL_SPACE);
		
		int spaceCount = (width / 2 - stringWidth / 2) / spaceWidth;
		
		CENTER_TITEL_BUILDER.setLength(0);		
		for(int i = 0; i < spaceCount; i++)
			CENTER_TITEL_BUILDER.append(CENTER_TITEL_SPACE);
		CENTER_TITEL_BUILDER.append(title);
		setTitle(CENTER_TITEL_BUILDER.toString());
	}
}
```


----------



## L-ectron-X (26. Okt 2010)

Volvagia hat gesagt.:


> ```
> public class Frame extends JFrame
> ```


Das ist ganz großer Mist. Man sollte vermeiden, eigenen Klassen den Namen bekannter Klassen aus der API zu geben.

@blubblub: Und jedes Mal, wenn der Benutzer das Fenster größer oder kleiner macht, müsste der Titel neu berechnet werden. Wofür? Hat das irgendeinen Mehrwert?


----------



## BlubBlub (27. Okt 2010)

nee hat keinen mehrwert, aber ich hab mal word aufgemacht und da gesehen, dass der titel auch mittig steht. ich find einfach das sieht besser aus. 
aber wenn das so kompliziert zu sein scheint, dann lohnt sich der aufwand nicht.
gäbe es eine einfache möglichkeit, dann hät ich das in meinen code mit aufgenommen.

thx für die hinweise


----------



## Gast2 (27. Okt 2010)

Im Fenstertitel kannst du nichts verändern müsstest du dein Frame selber zeichnen...


----------



## BlubBlub (27. Okt 2010)

okay thx


----------

