ProxyTester.java Source code

Java tutorial

Introduction

Here is the source code for ProxyTester.java

Source

import java.awt.Component;
import java.awt.Graphics;

import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTabbedPane;

public class ProxyTester {
    public static void main(String[] args) {
        JTabbedPane tabbedPane = new JTabbedPane();
        for (String name : imageNames) {
            JLabel label = new JLabel(new ImageProxy(name));
            tabbedPane.add(name, label);
        }

        JFrame frame = new JFrame();
        frame.add(tabbedPane);

        frame.setSize(FRAME_WIDTH, FRAME_HEIGHT);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }

    private static final String[] imageNames = { "A.gif", "B.gif", "C.gif", "D.gif", "E.gif" };

    private static final int FRAME_WIDTH = 500;
    private static final int FRAME_HEIGHT = 300;
}

class ImageProxy implements Icon {
    public ImageProxy(String name) {
        this.name = name;
        image = null;
    }

    public void paintIcon(Component c, Graphics g, int x, int y) {
        ensureImageLoaded();
        image.paintIcon(c, g, x, y);
    }

    public int getIconWidth() {
        ensureImageLoaded();
        return image.getIconWidth();
    }

    public int getIconHeight() {
        ensureImageLoaded();
        return image.getIconHeight();
    }

    private void ensureImageLoaded() {
        if (image == null) {
            System.out.println("Loading " + name);
            image = new ImageIcon(name);
        }
    }

    private String name;
    private ImageIcon image;
}