EddJack
EddJack

Reputation: 27

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);

  }
}

Upvotes: 2

Views: 11012

Answers (1)

alex2410
alex2410

Reputation: 10994

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.

Upvotes: 3

Related Questions