Search code examples
javaswingjlabel

How to display multiple images on a JLabel


This is a class project and I need to display more than one image but it only prints out the last label.setIcon. What should I do?

 package Rectangle;
 import java.awt.*;  
 import javax.swing.*;

 public class Rectangle extends JFrame { 


 public Rectangle(String arg) { 

  JPanel panel = new JPanel(); 
    panel.setBackground(Color.BLACK); 
    ImageIcon icon = new ImageIcon(this.getClass().getResource("1676858-livingforest2011.jpg"));
    ImageIcon icon1 = new ImageIcon(this.getClass().getResource("20496aa0.gif"));
    ImageIcon icon2 = new ImageIcon(this.getClass().getResource("akuma-ragingdemon-yes.gif"));
    JLabel label = new JLabel(); 
    label.setIcon(icon2); 
    label.setIcon(icon1); 
    label.setIcon(icon);
    panel.add(label);
    this.getContentPane().add(panel); 

  }
      public static void main(String[] args) {
      Rectangle forestFrame = new Rectangle(args.length == 0 ? null : args[3]);
      forestFrame.setSize(1698,770);
      forestFrame.setVisible(true); 
      forestFrame.setVisible(true);

  }
}

Solution

  • That happens because JLabel can hold only one Image. For solving your problem you can create a JPanel with 3 labels for each image. Examine next example:

    import javax.swing.ImageIcon;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    
    public class Example extends JPanel {
    
        public Example() {
             ImageIcon icon = new ImageIcon(this.getClass().getResource(IMAGE1));
             ImageIcon icon1 = new ImageIcon(this.getClass().getResource(IMAGE2));
             ImageIcon icon2 = new ImageIcon(this.getClass().getResource(IMAGE3));
             JLabel label1 = new JLabel(icon); 
             JLabel label2 = new JLabel(icon1); 
             JLabel label3 = new JLabel(icon2); 
    
             add(label1);
             add(label2);
             add(label3);
        }
    
        public static void main(String[] args) {
            JFrame frame = new JFrame();
    
            frame.add(new Example());
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.pack();
            frame.setVisible(true);
        }
    }
    

    IMAGE(1,2,3) - is your images.