# JLabel anzuzeigenden Text zentrieren



## stylegangsta (16. Sep 2015)

Hi,

ich habe 16 Buttons, die unterhalb alle ein JLabel haben, welcher den entsprechenden Namen anzeigt.

```
btnBW = new JButton();
        btnBW.setIcon(new ImageIcon(BW_Wappen));
        lblBW = new JLabel("Baden - W.");
        lblBW.setFont(lblBW.getFont().deriveFont(Font.BOLD, 15));
        lblBW.setForeground(Color.BLACK);
        lblBW.setHorizontalAlignment(SwingConstants.CENTER);
        lblBW.setVerticalAlignment(SwingConstants.CENTER);
        lblBW.setBounds(220, 138, 110, 140);
        btnBW.setBounds(220, 58, 110, 140);

        btnBayern = new JButton();
        btnBayern.setIcon(new ImageIcon(Bayern_Wappen));
        lblBayern = new JLabel("Bayern");
        lblBayern.setFont(lblBayern.getFont().deriveFont(Font.BOLD, 15));
        lblBayern.setForeground(Color.BLACK);
        lblBayern.setHorizontalAlignment(SwingConstants.CENTER);
        lblBayern.setVerticalAlignment(SwingConstants.CENTER);
        lblBayern.setBounds(340, 138, 110, 140);
        btnBayern.setBounds(340, 58, 110, 140);
```

Das bedeutet, dass die beiden Zeilen

```
lblBayern.setHorizontalAlignment(SwingConstants.CENTER);
        lblBayern.setVerticalAlignment(SwingConstants.CENTER);
```
bei jedem JLabel -in meinem Fall 16- mal vorkommen.

Dachte an Methode

```
public static void JLabel() {
        setHorizontalAlignment(SwingConstants.CENTER);
        setVerticalAlignment(SwingConstants.CENTER);
    }
```
, damit ich das nicht mehr 16 mal habe. Aber leider ist der Text dann nicht mehr zentriert unter dem Button, sondern Linksbündig.

Wer kann mir helfen?


----------



## javampir (16. Sep 2015)

den ansatz deiner vorgeschlagenen methode versteh ich nicht. was soll das static, warum public und wo soll die das label herbekommen?
mach doch einfach eine generator-methode:

```
private JLabel createLabel(String text) {
    JLabel ret = new JLabel(text);
    ret.setHorizontalAlignment(SwingConstants.CENTER);
    ret.setVerticalAlignment(SwingConstants.CENTER);
    return ret;
}
```


----------



## stylegangsta (16. Sep 2015)

javampir hat gesagt.:


> den ansatz deiner vorgeschlagenen methode versteh ich nicht. was soll das static, warum public und wo soll die das label herbekommen?



Hatte bei den Buttons auch ganz gut geklappt deswegen, versuche jetzt mal deinen Code. Danke


----------



## stylegangsta (16. Sep 2015)

stylegangsta hat gesagt.:


> Hatte bei den Buttons auch ganz gut geklappt deswegen, versuche jetzt mal deinen Code. Danke


Das ist immer noch Linksbündig. Muss ich irgendwas beachten oder einfach einsetzen?


----------



## javampir (16. Sep 2015)

möchtest du mal ein lauffähiges minimalbeispiel posten?


----------



## stylegangsta (16. Sep 2015)

javampir hat gesagt.:


> möchtest du mal ein lauffähiges minimalbeispiel posten?


Meinst du einen Screenshot, wie es aussieht? Ansonsten lief es ohne meine möchtegern Methode, die es Linksbündig gemacht hat (der obere Code)


----------



## javampir (16. Sep 2015)

damit meine ich code, der so kurz wie möglich ist, dein problem verdeutlicht und den man mit copy&paste einfach nehmen und ausprobieren kann


----------



## stylegangsta (16. Sep 2015)

javampir hat gesagt.:


> damit meine ich code, der so kurz wie möglich ist, dein problem verdeutlicht und den man mit copy&paste einfach nehmen und ausprobieren kann


Ah so, ok paar Minuten ist er hier


----------



## stylegangsta (16. Sep 2015)

Das müsste es sein. Die main wird von einer anderen Klasse aufgerufen, die den Frame öffnet


```
private JLabel lblBW;

public AEKFrame() {
createWidgets();
addWidgets();
}

private void addWidgets() {
        getContentPane().setLayout(null);
        getContentPane().add(lblTitelText);
}

private void createWidgets() {

lblBW = new JLabel("Baden - W.");
lblBW.setFont(lblBW.getFont().deriveFont(Font.BOLD, 15));
lblBW.setForeground(Color.BLACK);
lblBW.setHorizontalAlignment(SwingConstants.CENTER);
lblBW.setVerticalAlignment(SwingConstants.CENTER);
lblBW.setBounds(220, 138, 110, 140);
}
```

Und der Teil:
lblBW = new JLabel("Baden - W.");
lblBW.setFont(lblBW.getFont().deriveFont(Font.BOLD, 15));
lblBW.setForeground(Color.BLACK);
lblBW.setHorizontalAlignment(SwingConstants.CENTER);
lblBW.setVerticalAlignment(SwingConstants.CENTER);
lblBW.setBounds(220, 138, 110, 140);
kommt insgesamt für 16 Bundesländer vor, wollte deswegen die Zentrierung wenigstens noch getrennt haben, damit das nur einmal vorkommt


----------



## thet1983 (17. Sep 2015)

was hälst du von

```
label = new JLabel("Hallo",SwingConstants.CENTER); // oder kurz 0
```

schau dir mal die Konstruktoren von JLabel an...(API )


----------

