2013-06-29 13 views
5

Esiste un modo migliore per ottenere l'icona di una JLabel in un contenitore come BufferedImage senza più cast?JLabel get Image

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

Sì, utilizzare le variabili di riferimento, piuttosto che potenzialmente pericolose 'getComponents() '. Ad esempio, 'myLabel.getIcon(). getImage()'. –

+0

Hmm, non penso di poter usare riferimenti. Ho bisogno dell'immagine all'interno del metodo 'layoutContainer (Contenitore contenitore)' implementato dal mio layoutManager per ridimensionarlo proporzionalmente al resto della gui. – Sp0tlight

+0

Abbiamo un caso di requisiti di spostamento. Considera di dirci più informazioni, abbastanza da poter comprendere e rispondere pienamente alla tua domanda. Per favore date un'occhiata qui: [Jon Skeet: Scrivere la domanda perfetta] (http://msmvps.com/blogs/jon_skeet/archive/2010/08/29/writing-the-perfect-question.aspx). –

risposta

2

Al fine di ottenere un'immagine tamponato da un JLabel, effettuare le seguenti operazioni (che è quello che la tua risposta originale chiesto):

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