[RESOLVIDO] colocar um componente do tipo Graphics dentro de um JLabel
6 respostas
oitathi
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
O Graphics só desenha sobre a imagem. Quem vai para dentro do JLabel é a imagem, não o Graphics.
oitathi
ah sim… entendi…
mas pq vc usa o Graphics2D? alguma coisa especial?
Ah, e pq do dispose?
ViniGodoy
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.
oitathi
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?