# (Icon auf Label) -> auf Panel  rechtsbündig darstellen



## Student (9. Dez 2004)

Juhu,

habe folgendes Problem.
Ich möchte ein Icon, welches auf einem Label liegt auf ein Panel legen, aber so, dass das Icon rechtbündig auf dem Panel liegt.

Ich habe das so versucht:

```
JLabel lblNumCapsIcon = new JLabel(XYZRessourceLoader.
getImageIcon(XYZRessourceLoader.IMG_ALARM));

      pnlNumCaps.add( lblNumCapsIcon );
      pnlNumCaps.setAlignmentX( Component.RIGHT_ALIGNMENT );
      pnlNumCaps.setBorder(new SoftBevelBorder(BevelBorder.LOWERED));
      pnlNumCaps.setVisible( true );
```

aber irgendwie wird das Icon immer mittig angezeigt ..  ???:L 


Hat da jemand einen Tipp für mich?

Grüße Ben.


----------



## pogo (9. Dez 2004)

du brauchst einen layout manager.


----------



## Student (9. Dez 2004)

hmm .. dann mach ich das anders. danke.
eventuell melde ich mich nochmal diesbzgl. wenn das wieder nicht klappen sollte ;-)


----------



## Student (9. Dez 2004)

okay.
ich habe es jetzt so gelöst:

```
pnlNumCaps.add( lblNumCapsIcon );
      pnlNumCaps.setBorder(new SoftBevelBorder(BevelBorder.LOWERED));
      pnlNumCaps.setVisible( true );

// ..

      add(pnlNumCaps, new GridBagConstraints(2, 0, 1, 1, 0.1, 0.1,
              GridBagConstraints.EAST,
              GridBagConstraints.BOTH,
              new Insets(3, 0, 1, 0), 2, 0));
```

so. durch diese zeile hier:

```
pnlNumCaps.setBorder(new SoftBevelBorder(BevelBorder.LOWERED));
```
erstelle ich ja nun einen rahmen. wie kann ich denn den rahmen weglassen, aber trotzdem einen 'lowered'-effekt erzielen?


----------



## Student (9. Dez 2004)

keine möglichkeit vorhanden? sorry for spamming .. :roll:


----------



## bygones (9. Dez 2004)

meines wissens ist das die einzige Möglichkeit... vll mit einen CompoundBorder mit BevelBorder + EmptyBorder - bin aber net sicher


----------



## Student (10. Dez 2004)

okay. ich habe nun doch mal den weg über den layoutmanager gewählt und stoße dabei auf ein weitere problemchen.

derzeitiger code:

```
test.setLayout( new FlowLayout() );
       lblMessage.setFont(new Font("Dialog", 0, 11));

       JLabel lblNumCapsIcon = new JLabel(XYZRessourceLoader.
getImageIcon(XYZRessourceLoader.IMG_ALARM));

       pnlNumCaps.add( lblNumCapsIcon );
       pnlNumCaps.setAlignmentX( Component.RIGHT_ALIGNMENT );
       pnlNumCaps.setVisible( false );

       test.add( lblMessage );
       test.add( pnlNumCaps );
       test.setBorder( new SoftBevelBorder(BevelBorder.LOWERED));

 // ..

      add(test, new GridBagConstraints(1, 0, 1, 1, 3.0, 3.0,
              GridBagConstraints.CENTER,
              GridBagConstraints.BOTH,
              new Insets(3, 0, 1, 0), 0, 0));
```

test ist ein Panel
pnlNumCaps ist ein Panel
lblMessage ist ein Label

---

problem ist nur, dass das icon, wenn ich es über eine methode sichtbar mache, also setVisible(true), zentriert auf dem panel 'test' dargestellt wird und nicht rechtsbündig.

danke für eure hilfe .. ich verstehe es einfach nicht .. :roll:


----------



## Student (10. Dez 2004)

ok .. noch ein andere versuch.

```
pnlMessageNumCaps.setLayout( new GridBagLayout() );
       //lblMessage.setBorder(BorderFactory.createLoweredBevelBorder());
      lblMessage.setFont(new Font("Dialog", 0, 11));
      lblNumCaps.setVisible( true );

      pnlMessageNumCaps.add(lblNumCaps, new GridBagConstraints(0, 0, 1, 1, 2.9, 2.9,
                                      GridBagConstraints.CENTER,
                                      GridBagConstraints.BOTH,
                                      new Insets(3, 0, 1, 0), 0, 0));

      pnlMessageNumCaps.add(lblNumCaps, new GridBagConstraints(1, 0, 1, 1, 0.1, 0.1,
                                      GridBagConstraints.EAST,
                                      GridBagConstraints.BOTH,
                                      new Insets(3, 0, 1, 0), 0, 0));


      pnlMessageNumCaps.add( lblMessage );
      pnlMessageNumCaps.add( lblNumCaps );
      pnlMessageNumCaps.setBorder( new SoftBevelBorder(BevelBorder.LOWERED));


      m_pnlTray = new SHDStatusBarTrayPanel();
      setLayout(new GridBagLayout());
      add(lblStatus, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0,
              GridBagConstraints.WEST,
              GridBagConstraints.BOTH,
              new Insets(3, 0, 1, 0), 2, 0));
      add(pnlMessageNumCaps, new GridBagConstraints(1, 0, 1, 1, 3.0, 3.0,
              GridBagConstraints.CENTER,
              GridBagConstraints.BOTH,
              new Insets(3, 0, 1, 0), 0, 0));
      add(lblBenutzer, new GridBagConstraints(2, 0, 1, 1, 0.1, 0.1,
              GridBagConstraints.CENTER,
              GridBagConstraints.BOTH,
              new Insets(3, 0, 1, 0), 0, 0));
      add(pnlMandant, new GridBagConstraints(3, 0, 1, 1, 0.1, 0.1,
              GridBagConstraints.CENTER,
              GridBagConstraints.BOTH,
              new Insets(3, 0, 1, 0), 0, 0));

      add(m_pnlTray, new GridBagConstraints(4, 0, 1, 1, 0.1, 0.1,
              GridBagConstraints.WEST,
              GridBagConstraints.BOTH,
              new Insets(3, 0, 1, 0), 0, 0));
```

sorry, aber kann mir denn echt niemand weiterhelfen?
ich versuche hier seit stunden rum und es klappt einfach nicht. :?

ich weiß einfach nicht mehr weiter.
bitte ..


dank und grüße ben.


----------



## Student (13. Dez 2004)

*schubs-und-hoff*


----------



## Student (13. Dez 2004)

nunja. war ein scheißfehler ^^


```
pnlMessageNumCaps.add(lblNumCaps, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0,
                                            GridBagConstraints.CENTER,
                                            GridBagConstraints.BOTH,
                                        new Insets(3, 0, 1, 0), 2, 0));


      pnlMessageNumCaps.add(lblNumCaps, new GridBagConstraints(1, 0, 1, 1, 0.1, 0.1,
                                            GridBagConstraints.EAST,
                                            GridBagConstraints.RELATIVE,
                                        new Insets(3, 0, 1, 5), 0, 0));
```

einmal BOTH mit RELATIVE ersetzt und es klappt.
nunja. falls sie tatsächlich doch wer gedanken gemacht haben sollte :? .. danke dafür.


----------



## bygones (13. Dez 2004)

siehste - sich selber helfen ist anstrengend, aber nützlicher


----------



## Student (13. Dez 2004)

deathbyaclown hat gesagt.:
			
		

> siehste - sich selber helfen ist anstrengend, aber nützlicher


definitiv.

vor allem weil ich echt blind bin.
:arrow: http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/JLabel.html#JLabel(javax.swing.Icon, int)

mensch mensch mensch. es gibt einen passenden kosntruktor dafür :roll: 
nunja. alles geklärt. hoffe, dass es eventuell noch weiteren helfen kann.

grüße ben ;-)


----------

