/* * Copyright 2005, 2009 Cosmin Basca. * e-mail: cosmin.basca@gmail.com * * This is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License * as published by the Free Software Foundation; either version 2.1 * of the License, or (at your option) any later version. * * Please see COPYING for the complete licence. */ package robo.gui; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.awt.image.RenderedImage; import javax.media.jai.PlanarImage; import javax.media.jai.RenderedImageAdapter; import javax.swing.ImageIcon; import javax.swing.JLabel; import javax.swing.JPanel; public class BufferedImageDisplayerPanel extends JPanel { /** * */ private static final long serialVersionUID = 6800064884111245568L; private JLabel img; public BufferedImageDisplayerPanel(BufferedImage bi) { this(); this.img.setIcon( new ImageIcon(bi) ); } public BufferedImageDisplayerPanel() { this.preInit(); this.buildGUI(); this.postInit(); } protected void preInit() { this.img = new JLabel(); this.img.setDoubleBuffered(true); } protected void postInit() { this.setPreferredSize(img.getSize()); } protected void buildGUI() { this.add("Center",img); } public void setImage(BufferedImage image) { BufferedImage buffer = new BufferedImage(image.getWidth(), image.getHeight(),BufferedImage.TYPE_INT_RGB); Graphics2D graphics = (Graphics2D)buffer.getGraphics(); graphics.drawImage(image, 0, 0, null); graphics.dispose(); this.img.setIcon(new ImageIcon(buffer) ); this.img.repaint(); this.setPreferredSize(img.getSize()); } public void setImage(RenderedImage image) { this.setImage(new RenderedImageAdapter(image) ); } public void setImage(PlanarImage image) { this.setImage(image.getAsBufferedImage()); } public void clearImage() { this.img.setIcon(null); } }