2013-06-29 17 views
5

Czy istnieje lepszy sposób, aby uzyskać ikonę JLabel w pojemniku jako BufferedImage bez wielu rzutów?JLabel uzyskać Image

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

Tak, używać zmiennych referencyjnych zamiast potencjalnie niebezpiecznych 'getComponents() '. tj. 'myLabel.getIcon(). getImage()'. –

+0

Hmm, nie sądzę, żebym użył jakichkolwiek referencji. Potrzebuję obrazu w metodzie 'layoutContainer (Container container)' zaimplementowanej przez mój layoutManager, aby skalować ją proporcjonalnie do reszty GUI. – Sp0tlight

+0

Mamy przypadek przesuwania wymagań. Zastanów się, czy przekazać nam więcej informacji, abyśmy mogli w pełni zrozumieć i odpowiedzieć na twoje pytanie. Proszę spojrzeć tutaj: [Jon Skeet: Pisanie idealnego pytania] (http://msmvps.com/blogs/jon_skeet/archive/2010/08/29/writing-the-perfect-question.aspx). –

Odpowiedz

2

W celu uzyskania buforowany obraz z JLabel, należy wykonać następujące czynności (co jest co poprosił oryginalny odpowiedź):

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