setTitle() Titel zentrieren

BlubBlub

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

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

woran liegt das?
Wenn ich
Java:
System.out.println("\t bla");
schreibe dann funktioniert es doch.

und
Java:
		   String filename = "Dokument1";
		   setTitle("                            " + filename + " MyEditor");
funktioniert auch.
 
ok... und weiß vielleicht jemand wie man den text in der mitte des fenstertitels zentrieren kann unabhängig von der fenstergröße?
 
Das ist vielleicht nicht LnF- bzw. OS-Save und nicht unbedingt hübsch, aber könntest damit mal rumexperimentieren:

Java:
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());
	}
}
 
Java:
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?
 
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
 

Zurück
Oben