I have a JPanel
to which I'd like to add JPEG and PNG images that I generate on the fly.
All the examples I've seen so far in the Swing Tutorials, specially in the Swing examples use ImageIcon
s.
I'm generating these images as byte arrays, and are usually larger than the common icons they use in the examples, at 640x480.
ImageIcon
class to display an image that size in a JPanel
?JPanel
without using the ImageIcon
class?Edit: A more careful examination of the tutorials and the API shows that you cannot add an ImageIcon
directly to a JPanel
. Instead, they achieve the same effect by setting the image as an icon of a JLabel
. This just doesn't feel right...
Here's how I do it (with a little more info on how to load an image):
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
import javax.swing.JPanel;
public class ImagePanel extends JPanel{
private BufferedImage image;
public ImagePanel() {
try {
image = ImageIO.read(new File("image name and path"));
} catch (IOException ex) {
// handle exception...
}
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(image, 0, 0, this); // see javadoc for more info on the parameters
}
}