[RESOLVIDO] colocar um componente do tipo Graphics dentro de um JLabel

Gente, tem como eu colocar um componente do tipo Graphics dentro de um JLabel?
Eu tenho o seguinte código:

  bfCinza =  new BufferedImage(bf.getWidth(), bf.getHeight(), BufferedImage.TYPE_INT_RGB );     
  Graphics gr = bfCinza.createGraphics();   
  gr.setColor( Color.GRAY);     
  gr.fillRect( 0, 0, mapWidth+400, mapHeight+400); 

tem como colocar tudo isso dentro de um JLabel?
Aproveintando a deixa, alguém sabe se quando eu escrevo mapWidth+400, significa que a largura vai ter 400 px a mais do mapWidth?
Obrigada

Você faz assim:

  bfCinza =  new BufferedImage(bf.getWidth(), bf.getHeight(), BufferedImage.TYPE_INT_RGB );     
  Graphics2D gr = bfCinza.createGraphics();   
  gr.setColor( Color.GRAY);     
  gr.fillRect( 0, 0, mapWidth+400, mapHeight+400); 
  gr.dispose();
  seuLabel.setIcon(new ImageIcon(bfCinza));

O Graphics só desenha sobre a imagem. Quem vai para dentro do JLabel é a imagem, não o Graphics.

ah sim… entendi…
mas pq vc usa o Graphics2D? alguma coisa especial?
Ah, e pq do dispose?

O Graphics2D tem um pouco mais de recursos, e é ele que é retornado pelo createGraphics().

O Graphics2D, assim como Streams e ResultSetsprecisa ser liberado da memória manualmente. Ele usa recursos do sistema operacional (do OpenGL ou do DirectX), que não podem depender do garbage collector para serem liberados. Por isso, sempre que terminar de usar um objeto do tipo Graphics ou Graphics2D, você deve dar o dispose().

Não se preocupe. O Graphics2D é apenas o “lápis” que desenha sobre a imagem. E destruí-lo não irá destruir a imagem em si.

ah entendi sim Vini! Agora, pra finalizar esse tópico, quando eu escrevo:

mapWidth = 1500;
bfCinza =  new BufferedImage(mapWidth+400,mapHeight+400, BufferedImage.TYPE_INT_RGB );

quer dizer q o meu buffer (imagem) terá uma largura de 1900 px, certo?

sim

Obrigada de novo Vini!!!