# JLabel Textausrichtung (mittig u. rechtsbündig)



## Axion (6. Sep 2008)

Ich arbeite zur Zeit an einem Kalender und habe Probleme mit der Textausrichtung für die Spaltenüberschriften und des Datums. So - Sa sollte mittig angezeigt werden und beim Tag die Nummer rechtsbündig.
Es gibt noch ein kleines Problem mit dem Layoutmanager GridLayout. Vergrößere oder verkleiner ich das Frame und lässt sich die Größe nicht durch 7 Teilen wird der Rest einfach vom Layoutmaanger ignoriert und es entstehen hässliche Lücken. Am besten sieht man es wenn man dem JPanel Content einen Border verpasst.








```
/**
 * @(#)jRaidplaner.java
 *
 * jRaidplaner application
 *
 * @author 
 * @version 1.00 2008/9/1
 */
import java.awt.FlowLayout;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.Color;
import java.awt.Insets;
import java.awt.Dimension;
import javax.swing.*;
import javax.swing.BorderFactory;
import javax.swing.border.*;


import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

 
public class jRaidplaner extends JFrame{
    public jRaidplaner(){
    	this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	
    	this.setSize(800,600);
    	
    	this.setLayout(new BorderLayout());
    	
    	JPanel overview = new JPanel();
    	overview.setBackground(new Color(204,221,238));
    	overview.setLayout(new BorderLayout());
    	
    	JPanel layoutHack = new JPanel();
    	layoutHack.setLayout(new BorderLayout());
    	
    	JPanel headline = new JPanel();
    	headline.setLayout(new GridLayout(1,7));
    	headline.setBackground(new Color(195,217,255));
    	String[] headlines = {
    		"So","Mo","Di","Mi","Do","Fr","Sa"
    	};
    	for(int i=0; i<7; i++){
    		JLabel dayString = new JLabel(headlines[i]);
    		dayString.setHorizontalTextPosition(SwingConstants.CENTER);
    		dayString.setForeground(Color.BLUE);
    		dayString.setBorder(BorderFactory.createMatteBorder(0,0,0,1,new Color(195,217,255)));
    		headline.add(dayString);
    	}

    	layoutHack.add(headline,BorderLayout.PAGE_START);
    	
    	JPanel content = new JPanel();
    	content.setLayout(new GridLayout(6,7));
    	content.setBackground(new Color(195,217,255));
    	for(int i = 0; i < 6*7; i++){
			JPanel day = new JPanel();
			JLabel number = new JLabel(""+i);
			number.setHorizontalTextPosition(JLabel.RIGHT);
			number.setOpaque(true);
			number.setBackground(new Color(232,238,247));
			
			day.setLayout(new BorderLayout());
			day.add(number, BorderLayout.PAGE_START);
			day.setBorder(BorderFactory.createMatteBorder(0,0,1,1,new Color(204,221,238)));
			day.setBackground(Color.WHITE);
			content.add(day);    		
    	}
    	layoutHack.add(content,BorderLayout.CENTER);
    	overview.add(layoutHack,BorderLayout.CENTER);
    	
    	JPanel lPlaceholder = new JPanel();
    	lPlaceholder.setBackground(new Color(195,217,255));
    	overview.add(lPlaceholder,BorderLayout.BEFORE_LINE_BEGINS);
    	
    	JPanel rPlaceholder = new JPanel();
    	rPlaceholder.setBackground(new Color(195,217,255));
    	overview.add(rPlaceholder,BorderLayout.AFTER_LINE_ENDS);
    	
    	JPanel bPlaceholder = new JPanel();
    	bPlaceholder.setBackground(new Color(195,217,255));    	
    	overview.add(bPlaceholder,BorderLayout.PAGE_END);
    	
    	this.add(overview,BorderLayout.CENTER);
		
		this.setVisible(true);
    }
    public static void main(String[] args) {
    	
    	// TODO, add your application code
    	new jRaidplaner();
    }
}
```


----------



## Marco13 (7. Sep 2008)

http://java.sun.com/javase/6/docs/api/javax/swing/JLabel.html#setHorizontalAlignment(int) 

Für die Lücken ... ggf. einen eigenen LayoutManager schreiben. Da das Layout ja "fixiert" ist, dürfte man mit einem stark vereinfachten GridLayout den gewünschten Effekt erreichen.


----------



## Axion (7. Sep 2008)

Jetzt fällt es mir wie Schuppen von den Augen das ich die falsche Funktion benutzt habe (setHorizontalTextPosition     -> setHorizontalAlignment) und schon funktioniert es. 

Wollte eigentlich keinen eigenen LayoutManager schreiben ...

Vielen Dank für deine Hilfe Marco13.


----------

