# swing komponenten drehen?



## Java Chris (25. Jun 2006)

ist es möglich ein JLabel um 45° zu drehen? (nicht den inhalt) sondern das Label selbst, wenn ja wie denn?


----------



## AlArenal (25. Jun 2006)

Wenn man den Inhalt nicht dreht, ist es doch nicht gedreht? *amkopfkratz*


----------



## jagdfalke (25. Jun 2006)

Schätze er meint ein solches JLabel:

```
|---|
| H |
| A |  
| L |
| L |
| O |
|---|
```
im Gegensatz zu

```
|--------------------|
| HALLO               |
|--------------------|
```

mfg
jagdfalke


----------



## AlArenal (25. Jun 2006)

Ahhh.. ja, das mag sein. Daran hatte ich wiederum nicht gedacht. 
Nein, ist standardmäßig nicht vorgesehen, müsste man sich selber stricken.


----------



## Illuvatar (25. Jun 2006)

Man könnte natürlich <html>H
A
L
L
O</html> übergeben


----------



## AlArenal (25. Jun 2006)

Illuvatar hat gesagt.:
			
		

> Man könnte natürlich <html>H
> A
> L
> L
> O</html> übergeben



Very sophisticated, indeed!


----------



## Illuvatar (25. Jun 2006)

Thank you, my dear :bae:


----------



## Java Chris (25. Jun 2006)

ich will eigentlich ein label um 45° drehen, und genau da is mein problem, ich will 50 bilder nebeneinander reihen die alle 45 grad gedreht sind, dadurch füllen sie sich aneinandergereiht nicht aus, und ich hab überall weiße lücken, dass würd ich gern mit dem drehen umgehen


----------



## jagdfalke (25. Jun 2006)

Lade die Bilder in ein BufferedImage alle nebeneinander und drehe das ganze dann um 45 Grad. Danach übergibst du es an ein JLabel und lässt es anzeigen.

mfg
jagdfalke


----------



## Rydl (26. Jun 2006)

*hust... 90° ...


----------



## AlArenal (26. Jun 2006)

Bau dir aus deinen gedrehten Bildern ein BufferedImage und papp das auf irgendeine Komponenten und gut iss.


----------



## thE_29 (26. Jun 2006)

Ich hätte da mal was, ist aber sehr in meinem Code verbaut


```
/****************************************************************************************************************************
   *
   * 

Title: Klasse stellt ein drehendes JLabel mit Text dar</p>
   *
   * 

Description: </p>
   *
   * 

Copyright: Copyright (c) 2006</p>
   *
   * 

Company: Taschek Joerg</p>
   *
   * @author Taschek Jörg
   * @version 1.0 Fertige Version 12.04.06
   ***************************************************************************************************************************/
  private class RotateLabel extends JLabel
  {
    private double rotate = 0;
    private int width = 0;

    /****************************************************************************************************************************
     * Standardkonstruktor der einem ein PrintAbleElement übergibt, welches den text  + rotationsgrad hat
     * @param text Text
     ***************************************************************************************************************************/
    public RotateLabel(Printer.Text text)
    {
      super(text.getText());
      this.rotate = text.getRotate();
      this.width = Printer.getMetrics(text).stringWidth(text.getText());
    }

    /****************************************************************************************************************************
     * Überschriebene paintComponent Methode für das drehen und antianalising
     * @param g Graphics
     ***************************************************************************************************************************/
    public void paintComponent(Graphics g)
    {
      try{
        Graphics2D g2d = (Graphics2D) g;
        if(ANTIANALISING)
        {
          RenderingHints qualityHints = new RenderingHints(RenderingHints.KEY_ANTIALIASING,  RenderingHints.VALUE_ANTIALIAS_ON);
          qualityHints.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
          g2d.setRenderingHints(qualityHints);
        }

        AffineTransform origXform = g2d.getTransform();
        AffineTransform newXform = (AffineTransform)(origXform.clone());
        //center of rotation is center of the panel
        int xRot = this.getWidth()/2;
        int yRot = this.getHeight()/2;
        newXform.rotate(Math.toRadians(rotate), xRot, yRot);
        g2d.setTransform(newXform);
        //draw image centered in panel
        super.paintComponent(g2d);
        g2d.setTransform(origXform);

      }catch(Exception ex)
      {
        ex.printStackTrace(System.out);
      }
    }
}
```

1. private class gehört weg
2. habe ich noch ne Klasse Text, die ersetzen und stattdessen die Breite + rotate Wert übergeben!

3. dann sollte es klappen


----------

