import javax.swing.*;
import java.awt.*;

public class LoadWaitImage extends JPanel {
    private final Image image;

    public LoadWaitImage()
    {
        // Load image
        image = Toolkit.getDefaultToolkit().getImage("image.jpg");

        // Wait image
        MediaTracker tracker = new MediaTracker(this);
        tracker.addImage(image, 0);

        try {
            tracker.waitForID(0);
        }
        catch (InterruptedException e) {
            JOptionPane.showMessageDialog(null,
                    e, "Error", JOptionPane.ERROR_MESSAGE);
        }
    }

    @Override
    public void paint(Graphics g)
    {
        Graphics2D g2 = (Graphics2D) g;

        RenderingHints hints = g2.getRenderingHints();
        hints.put(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
        hints.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
        hints.put(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
        g2.addRenderingHints(hints);

        g2.drawImage(image, 0, 0, null);

        g2.drawImage(image, 0, 450, 90, 70, null);
    }

    public static void main(String[] args)
    {
        SwingUtilities.invokeLater(() -> {
            JFrame window = new JFrame("Load and Wait an Image");
            window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            window.setLocation(200, 10);
            window.setSize(800, 600);
            window.setContentPane(new LoadWaitImage());

            window.setVisible(true);
        });
    }
}
