# Image von JComponent



## Dragonfire (3. Mrz 2009)

Hihu,
bin kurz vor der Verzweiflung ...
wollte von einem JComponent ein Image machen ...
um z.B. ein Panel Inhalt auf ein JButton zu packen.

Nach langem Suchen hab ich endlich etwas gefunden,
nachdem ich selbst mit createImage aus JComponent verzweifelt bin,
hab ich das hier genommen:

http://www.java-forum.org/awt-swing...chnet-sich-nicht-bei-aufruf-von-paintall.html

allerdings wird nur das Sichtbare auf dem Bildschirm 
in mein Offscreen-Image geschrieben.

Gibt es eine Möglichkeit wenn man ein JComponent im z, B, Datenfeld hat,
davon ohne Anzeige auf dem Bildschirm (oder getrixt, z.B. aktuelles Fenster im Vordergrund)
ein Image zu erstellen?

Ps.: Externe Pakete wie z.B. SwingLabs gingen notfalls auch,
wenn Swing das von Haus aus nicht kann oder es zu kompliziert wird.


----------



## Ebenius (4. Mrz 2009)

Ich verstehe das Problem eigentlich nicht. Das funktioniert doch super, oder nicht? [HIGHLIGHT="Java"]final JButton componentToPrint = new JButton("ABC");

// set size to preferred size
componentToPrint.setSize(componentToPrint.getPreferredSize());
componentToPrint.doLayout();

// Create image
final BufferedImage img =
      new BufferedImage(componentToPrint.getWidth(), componentToPrint
            .getHeight(), BufferedImage.TYPE_INT_ARGB);
componentToPrint.paint(img.getGraphics());

// Bild fertig; testen...
final JComponent painter = new JComponent() {

  @Override
  protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    g.drawImage(img, 0, 0, this);
  }
};
painter.setPreferredSize(new Dimension(img.getWidth(), img.getHeight()));
JOptionPane.showMessageDialog(null, painter);[/HIGHLIGHT]
Ebenius


----------



## Dragonfire (4. Mrz 2009)

DANKE 

hatte folgenden Methoden vergessen:

componentToPrint.setSize(componentToPrint.getPreferredSize());
componentToPrint.doLayout();

Kannte doLayout() auch vorher nicht so genau ...


----------

