Show Icon Displayer

An icon is an image, picture, or representation. To display the icon, we have defined an image.

Show Icon Displayer

An icon is an image, picture, or representation. To display the icon, we have defined an image.

Show Icon Displayer

Show Icon Displayer

     

In this section, you will studied how to display a single icon one or more times in a row.

An icon  is an image, picture, or representation. To display the icon, we have defined an image. The class ImageIcon is responsible to paint the icons from Images. The MediaTracker preloads the images that are created from a URL, filename or byte array.

The variable space is defined to set the space between the images. The method createEmptyBorder(this.space, this.space,this.space, this.space) creates an empty border that takes up space. The class Insets defines the borders of a container which specifies the space at each of its edges that a container must leave .

The method getPreferredSize()  is used to determine how the layout should be arranged. The method getClipBounds() gets a rectangle and encloses the clipping region of the Graphics object. To give the blending and transparency effects with graphics and images for combining source and destination pixels, the class AlphaComposite is used.

Following code returns an ImageIcon:

protected static ImageIcon createImageIcon(String path) {
java.net.URL imgURL = IconDisplayerExample.class.getResource(path);
return new ImageIcon(imgURL);
}

Here is the code of IconDisplayerExample.java

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

public class IconDisplayerExample extends JComponent {
  private Icon icon;
  private int numOfImages = 2;
  private int space = 5
  private Rectangle rect1 = new Rectangle();
  private Rectangle rect2 = new Rectangle();
public IconDisplayerExample(Icon icon, int numOfImages, int space) {
  this.icon = icon;
  if (numOfImages > 0) {
  this.numOfImages = numOfImages;
  }
  if (this.space > 0) {
  setBorder(BorderFactory.createEmptyBorder(this.space, this.space,
  this.space, this.space));
  }
  }
  public Dimension getPreferredSize() {
  Insets insets = getInsets();
  return new Dimension(icon.getIconWidth() * numOfImages + space
  * (numOfImages - 1) + insets.left + insets.right,
  icon.getIconHeight() + insets.top + insets.bottom);
 }
  public Dimension getMinimumSize() {
  Insets insets = getInsets();
  return new Dimension(icon.getIconWidth() + insets.left
  + insets.right, icon.getIconHeight() + insets.top
  + insets.bottom);
 }
  protected void paintComponent(Graphics g) {
  Insets insets = getInsets();
  int iconWidth = icon.getIconWidth();
  int p = getWidth() - insets.right - iconWidth;
  int q = insets.top;
  boolean shaded = false;
  Graphics2D g2 = (Graphics2D) g.create();
  g.getClipBounds(rect2);
  while (p >= insets.left) {
  rect1.setBounds(p, q, iconWidth, icon
  .getIconHeight());
  if (rect1.intersects(rect2)) {
  icon.paintIcon(this, g2, p, q);
  }
  p -= (iconWidth + space);
  if (!shaded) {
  g2.setComposite(AlphaComposite.getInstance(
  AlphaComposite.SRC_OVER, 0.1f));
  shaded = true;
  }
  }
  g2.dispose(); 
  }
 protected static ImageIcon createImageIcon(String path) {
  java.net.URL imgURL = IconDisplayerExample.class.getResource(path);
  return new ImageIcon(imgURL);
 }
 private static void createAndShowGUI() {
  JFrame frame = new JFrame("Icon Displayer Example");
  frame.setSize(400,150);
  ImageIcon imageIcon = createImageIcon("alert.gif");
  IconDisplayerExample iconDisplayer = new IconDisplayerExample(
   imageIcon, 
6, -1);
  frame.getContentPane().add(iconDisplayer, BorderLayout.CENTER);
  frame.setVisible(true);
  }
  public static void main(String[] args) {
  javax.swing.SwingUtilities.invokeLater(new Runnable() {
  public void run() {
  createAndShowGUI();
  }
  });
  }
}

Output will be displayed as:

Download Source Code