2013-06-29 23 views
5

Bir kapsayıcıda bir JLabel'in simgesini birden çok oyuncu olmadan BufferedImage olarak almanın daha iyi bir yolu var mı? Bir JLabel bir tamponlu bir görüntü elde etmek içinJLabel Resmi al

Component[] components = container.getComponents(); 
BufferedImage image = ((BufferedImage) ((ImageIcon) ((JLabel) components[i]).getIcon()).getImage()); 
+5

Evet, oldukça tehlikeli 'getComponents daha referans değişkenleri kullanın() '. yani, myLabel.getIcon(). getImage() '. –

+0

Hmm, Referansları kullanabileceğimi sanmıyorum. Resmi, gui'nin geri kalanıyla orantılı olarak ölçeklendirmek için layoutManager'ım tarafından uygulanan 'layoutContainer (Container container)' yöntemine ihtiyacım var. – Sp0tlight

+0

Bir vardiya gereksinimimiz var. Sorunuzu tam olarak anlayabilmemiz ve cevaplayabilmemiz için bize daha fazla bilgi vermeyi düşünün. Lütfen buraya bir göz atın: [Jon Skeet: Mükemmel Soruyu Yazmak] (http://msmvps.com/blogs/jon_skeet/archive/2010/08/29/writing-the-perfect-question.aspx). –

cevap

2

, siz (orijinal cevap istedi ne olduğunu) aşağıdakileri yapın:

Icon icon = label.getIcon(); 
BufferedImage bi = new BufferedImage(icon.getIconWidth(), 
       icon.getIconHeight(),BufferedImage.TYPE_INT_RGB);