How can I display an image in a JPanel

FiroKun

My question here is how can I display an image into a JPanel? Other topics here asking something similar aren't clear to my about how can I do that.

I have a directory in my project folder that have image files Project Folder/GUI/img, specifically gray.png and green.png which I want to display in a JPanel.

I tried with the following code using ImageIcon and JLabel that I found in other post:

ImageIcon image = new ImageIcon("GUI/img/gray.png");
JLabel label = new JLabel(image);

//JPanel panel is already initialized by the IDE
panel.add(label)

But doesn't work... The JPanel remain empty without displaying any image. How can I do that?

Additional to this, I want that the image inside the JPanel change (gray.png for green.png) when some action is performed, for example pressing a button. I can archive that by the same method for display the image in the JPanel right?

Thanks in advance!

EDIT: Here's an example of a test code for get this. The initialization is done automatically by the IDE.

import java.awt.Image;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.UIManager;

public class Sample extends javax.swing.JFrame {

    public Sample() {
        initComponents();
    }

    //Initialization
    private void initComponents() {

        PanelImage = new javax.swing.JPanel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowOpened(java.awt.event.WindowEvent evt) {
                formWindowOpened(evt);
            }
        });

        javax.swing.GroupLayout PanelImageLayout = new javax.swing.GroupLayout(PanelImage);
        PanelImage.setLayout(PanelImageLayout);
        PanelImageLayout.setHorizontalGroup(
            PanelImageLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 100, Short.MAX_VALUE)
        );
        PanelImageLayout.setVerticalGroup(
            PanelImageLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 100, Short.MAX_VALUE)
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(61, 61, 61)
                .addComponent(PanelImage, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(239, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(45, 45, 45)
                .addComponent(PanelImage, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(155, Short.MAX_VALUE))
        );

        pack();
    }                    

    private void formWindowOpened(java.awt.event.WindowEvent evt) {                                  
        try {
            DisplayImage(PanelImage, "/GUI/img/gray.png");
        } catch (Exception ex) {
            Logger.getLogger(Sample.class.getName()).log(Level.SEVERE, null, ex);
        }
    }                                 

    //For display the url image in a JPanel
    private void DisplayImage(JPanel jp, String url) throws IOException, Exception {
        try {
            Image image=ImageIO.read(this.getClass().getResource(url));
            ImageIcon imageicon=new ImageIcon(image);
            JLabel label=new JLabel(imageicon);
            jp.add(label);
        } catch (IOException ex) {
            throw new IOException();
        } catch (Exception ex) {
            throw new Exception();
        }
    }

    public static void main(String args[]) {
        try {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(Sample.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }

        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Sample().setVisible(true);
            }
        });
    }

    // Variables declaration                  
    private javax.swing.JPanel PanelImage;                
}

The private void DisplayImage(JPanel jp, String url) is what I need to work for display the image, from the url String url in the JPanel jp

FiroKun

Looking for pieces of code in Google I ended up with a solution... And was applying the same pattern that previous comments refer. The code that gave me the solution was:

label.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/gray.png")))

With that, I made then the method that I wanted to implement:

private static void DisplayImage(JPanel jp, String url) {
    JLabel jl=new JLabel();
    jl.setIcon(new javax.swing.ImageIcon(getClass().getResource(url)));
    jp.add(jl);
}

Maybe this is not the perfect and most-correct solution, but works perfect to my, that is what I want.

Thanks all for the answers and suggestions!

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

How can I display a Media picker image

From Dev

How can I display the image name on mouseover?

From Dev

How can I display an image using Pillow?

From Dev

How can I display a paragraph over image?

From Dev

how can I Display image in ExoPlayer?

From Dev

How can i show the jpanel?

From Dev

How can I display an image on top of an image in PyGame?

From Dev

How can I display binary image data as an Image in PHRETS

From Dev

How can I display an image on top of an image in PyGame?

From Dev

Unable to display image on JPanel

From Dev

Java : Can't display JPanel above a JLabel with image

From Dev

How do I add a background image to a JPanel?

From Dev

How can I replace one JPanel with another JPanel in the same position?

From Dev

How can I display an image in webkit really fast?

From Dev

How can I test retina image substition without retina display?

From Dev

How can I display an image in the right order in a graph?

From Dev

How can i display a image in codeigniter outside root directory

From Dev

How can I display a fullscreen image with a black background?

From Dev

How Can i display a dynamic image in crystal report using java

From Dev

How can I display image of blob type in php?

From Dev

How can I display the image clicked on another div in jquery

From Dev

How can I display an image stored in a database on a php page?

From Dev

Woocommerce with wordpress - how can I display category image?

From Dev

How can I display png data as an image inside in the browser?

From Dev

How can I remove a duplicate image without display:none?

From Dev

How can I display image file object from java to jsp?

From Dev

How can i display the latest image saved in a specific directory?

From Dev

How can I get a SimpleDraweeView to display an image properly?

From Dev

How can I display an ImageField image in my template?

Related Related

  1. 1

    How can I display a Media picker image

  2. 2

    How can I display the image name on mouseover?

  3. 3

    How can I display an image using Pillow?

  4. 4

    How can I display a paragraph over image?

  5. 5

    how can I Display image in ExoPlayer?

  6. 6

    How can i show the jpanel?

  7. 7

    How can I display an image on top of an image in PyGame?

  8. 8

    How can I display binary image data as an Image in PHRETS

  9. 9

    How can I display an image on top of an image in PyGame?

  10. 10

    Unable to display image on JPanel

  11. 11

    Java : Can't display JPanel above a JLabel with image

  12. 12

    How do I add a background image to a JPanel?

  13. 13

    How can I replace one JPanel with another JPanel in the same position?

  14. 14

    How can I display an image in webkit really fast?

  15. 15

    How can I test retina image substition without retina display?

  16. 16

    How can I display an image in the right order in a graph?

  17. 17

    How can i display a image in codeigniter outside root directory

  18. 18

    How can I display a fullscreen image with a black background?

  19. 19

    How Can i display a dynamic image in crystal report using java

  20. 20

    How can I display image of blob type in php?

  21. 21

    How can I display the image clicked on another div in jquery

  22. 22

    How can I display an image stored in a database on a php page?

  23. 23

    Woocommerce with wordpress - how can I display category image?

  24. 24

    How can I display png data as an image inside in the browser?

  25. 25

    How can I remove a duplicate image without display:none?

  26. 26

    How can I display image file object from java to jsp?

  27. 27

    How can i display the latest image saved in a specific directory?

  28. 28

    How can I get a SimpleDraweeView to display an image properly?

  29. 29

    How can I display an ImageField image in my template?

HotTag

Archive