Imagens não são pintadas

Olá pessoal!
Este é o meu primeiro post. Estou tendo problemas em pintar 5 imagens.
Elas não estão sendo pintadas. Não tenho uma única mensagem de erro, nada.
Por gentileza, se puderem me ajudar, ficarei grato.
Eis os códigos:

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

/**
    The SimpleScreenManager class manages initializing and
    displaying full screen graphics modes.
*/
public class SimpleScreenManager {

    private GraphicsDevice device;

    /**
        Creates a new SimpleScreenManager object.
    */
    public SimpleScreenManager() {
        GraphicsEnvironment environment =
            GraphicsEnvironment.getLocalGraphicsEnvironment();
        device = environment.getDefaultScreenDevice();
    }


    /**
        Enters full screen mode and changes the display mode.
    */
    public void setFullScreen(DisplayMode displayMode,
        JFrame window)
    {
        window.setUndecorated(true);
        window.setResizable(false);

        device.setFullScreenWindow(window);
        if (displayMode != null &&
            device.isDisplayChangeSupported())
        {
            try {
                device.setDisplayMode(displayMode);
            }
            catch (IllegalArgumentException ex) {
                // ignore - illegal mode for this device
            }
        }
    }


    /**
        Returns the window currently used in full screen mode.
    */
    public Window getFullScreenWindow() {
        return device.getFullScreenWindow();
    }


    /**
        Restores the screen's display mode.
    */
    public void restoreScreen() {
        Window window = device.getFullScreenWindow();
        if (window != null) {
            window.dispose();
        }
        device.setFullScreenWindow(null);
    }

}

Classe 2:

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

public class ImageTest extends JFrame {

    public static void main(String[] args) {

        DisplayMode displayMode;

        if (args.length == 3) {
            displayMode = new DisplayMode(
                Integer.parseInt(args[0]),
                Integer.parseInt(args[1]),
                Integer.parseInt(args[2]),
                DisplayMode.REFRESH_RATE_UNKNOWN);
        }
        else {
            displayMode = new DisplayMode(800, 600, 16,
                DisplayMode.REFRESH_RATE_UNKNOWN);
        }

        ImageTest test = new ImageTest();
        test.run(displayMode);
    }

    private static final int FONT_SIZE = 24;
    private static final long DEMO_TIME = 2000;

    private SimpleScreenManager screen;
    private Image bgImage;
    private Image opaqueImage;
    private Image transparentImage;
    private Image translucentImage;
    private Image antiAliasedImage;
    private boolean imagesLoaded;

    public void run(DisplayMode displayMode) {
        setBackground(Color.blue);
        setForeground(Color.white);
        setFont(new Font("Dialog", Font.PLAIN, FONT_SIZE));
        imagesLoaded = false;

        screen = new SimpleScreenManager();
        try {
            screen.setFullScreen(displayMode, this);
            loadImages();
            try {
                Thread.sleep(DEMO_TIME);
            }
            catch (InterruptedException ex) { }
        }
        finally {
            screen.restoreScreen();
        }
    }


    public void loadImages() {
        bgImage = loadImage("images/background.jpg");
        opaqueImage = loadImage("images/opaque.png");
        transparentImage = loadImage("images/transparent.png");
        translucentImage = loadImage("images/translucent.png");
        antiAliasedImage = loadImage("images/antialiased.png");
        imagesLoaded = true;
        // signal to AWT to repaint this window
        repaint();
    }


    private Image loadImage(String fileName) {
        return new ImageIcon(fileName).getImage();
    }


    public void paint(Graphics g) {
        // set text anti-aliasing
        if (g instanceof Graphics2D) {
            Graphics2D g2 = (Graphics2D)g;
            g2.setRenderingHint(
                RenderingHints.KEY_TEXT_ANTIALIASING,
                RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
        }

        // draw images
        if (imagesLoaded) {
            g.drawImage(bgImage, 0, 0, null);
            drawImage(g, opaqueImage, 0, 0, "Opaque");
            drawImage(g, transparentImage, 320, 0, "Transparent");
            drawImage(g, translucentImage, 0, 300, "Translucent");
            drawImage(g, antiAliasedImage, 320, 300,
                "Translucent (Anti-Aliased)");
        }
        else {
            g.drawString("Loading Images...", 5, FONT_SIZE);
        }
    }


    public void drawImage(Graphics g, Image image, int x, int y,
        String caption)
    {
        g.drawImage(image, x, y, null);
        g.drawString(caption, x + 5, y + FONT_SIZE +
            image.getHeight(null));
    }

}

As Strings aparecem normalmente, o background em azul, etc.
Menos as imagens.

Muito obrigado pessoal!

Já usou um debbuger para ver se as imagens estão mesmo sendo carregadas? Os códigos do livro do Brackeen geralmente não tem problemas…

Bom dia ViniGodoy!
Muito obrigado pela sua resposta!

Então cara eu já usei…embora eu não tive nenhum nullPointer, eu pensei que em todo caso as Images estivessem como null, mas não foi o caso, pq eu debugei o código do começo ao fim, e não tive um erro, correu tudo certo. Nada, nada, nada fora do comum.
Eu não tenho muita experiência com J2SE…eu trabalho há alguns anos apenas com J2ME… e estou começando a fazer alguns trabalhos em J2SE… o que eu acho, posso estar falando uma asneira, é que alguns dos métodos que utilizo neste código já estão obsoletos na atual versão do java… pq o livro foi escrito na época do java 1.4.

Eu realmente não consigo entender…pq aparentemente está tudo certo!
Teria como vc testar o código na sua máquina?

Cara, mto obrigado pelo post!

Vlw

Pessoal, vi um post em outro fórum em que um colega teve o mesmo problema, e assim como este colega, estou utilizando o eclipse, e a única maneira de se fazer a imagem aparecer é colocar o cainho completo de onde se encontra a imagem, ex: C:/daniel/workspace/ImageTest/src/images

Eu tentei configurar o arquivo .classpath do eclipse, a run configuration, mas nada deu certo.

Alguém sabe como resolver?

Vlw

Então é isso mesmo. É assim que pega imagens no disco.

Se você quer imagens relativas ao seu classpath, use no lugar o getResource():

private Image loadImage(String imageName) { try { return ImageIO.read(getClass().getResource(imageName)); } catch (IOException e) { throw new RuntimeException("Unable to load image " + imageName, e); } }

A vantagem desse método é que ele também funciona quando suas imagens forem para dentro de um .jar.

Aliás, é uma boa você ler esse artigo aqui:
Trabalhando com imagens.

Resolvido!!!
Cara, muuuuuuuuuuuuuuuuuuuuuuuuuuito obrigado!
Vlw mesmo!
Vou ler este artigo agora mesmo!
Vlw cara…

[quote=ViniGodoy]Aliás, é uma boa você ler esse artigo aqui:
Trabalhando com imagens.[/quote]

Ou Vini, tá muito bom o seu site, tem muita matéria interessante lá…

cara, aproveitando eu to acompanhando este tópico e no meu carregamento deu erro, como posso fazer para evitar esse erro?

Exception in thread "main" java.lang.IllegalArgumentException: input == null!
        at javax.imageio.ImageIO.read(ImageIO.java:1362)
        at regex.ImageTest.loadImage(ImageTest.java:86)
        at regex.ImageTest.loadImages(ImageTest.java:73)
        at regex.ImageTest.run(ImageTest.java:59)
        at regex.ImageTest.main(ImageTest.java:36)

acho que não tá encontrando a imagem, mas quando dou um JOptionPane.showMessageDialog na string enviada, ele envia o caminho correto…

Acho que com o getResource agora você tem que colocar uma “/” na frente do caminho:

bgImage = loadImage("/images/background.jpg");  

valeu Vini, eu olhei aqui não era o barra não, é que como não carregou a imagem ele passa como NULL, então gera excessão, mas depois que coloquei o nome diretamente pra carregar e depois voltei o que era antes rodou belezinha, vou estudar o seus artigos sobre manipulação de imagens no seu site…

Fala pessoal!
Atendendo a pedidos vou colocar aqui o código com a correção sugerida pelo nosso colega:

import java.awt.*;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;

public class ImageTest extends JFrame {

    public static void main(String[] args) {

        DisplayMode displayMode;

        if (args.length == 3) {
            displayMode = new DisplayMode(
                Integer.parseInt(args[0]),
                Integer.parseInt(args[1]),
                Integer.parseInt(args[2]),
                DisplayMode.REFRESH_RATE_UNKNOWN);
        }
        else {
            displayMode = new DisplayMode(800, 600, 16,
                DisplayMode.REFRESH_RATE_UNKNOWN);
        }

        ImageTest test = new ImageTest();
        test.run(displayMode);
    }

    private static final int FONT_SIZE = 24;
    private static final long DEMO_TIME = 3000;

    private SimpleScreenManager screen;
    private Image bgImage;
    private Image opaqueImage;
    private Image transparentImage;
    private Image translucentImage;
    private Image antiAliasedImage;
    private boolean imagesLoaded;

    public void run(DisplayMode displayMode) {
        setBackground(Color.blue);
        setForeground(Color.white);
        setFont(new Font("Dialog", Font.PLAIN, FONT_SIZE));
        imagesLoaded = false;

        screen = new SimpleScreenManager();
        try {
            screen.setFullScreen(displayMode, this);
            loadImages();
            try {
                Thread.sleep(DEMO_TIME);
            }
            catch (InterruptedException ex) { }
        }
        finally {
            screen.restoreScreen();
        }
    }


    public void loadImages() {
        bgImage = loadImage("/images/background.jpg");
        opaqueImage = loadImage("/images/opaque.png");
        transparentImage = loadImage("/images/transparent.png");
        translucentImage = loadImage("/images/translucent.png");
        antiAliasedImage = loadImage("/images/antialiased.png");
        imagesLoaded = true;
        // signal to AWT to repaint this window
        repaint();
    }


    private Image loadImage(String fileName) {
        //return new ImageIcon(fileName).getImage();
    	try 
    	{  
    		return ImageIO.read(getClass().getResource(fileName));  
    	}
    	catch (IOException e) 
    	{  
    		throw new RuntimeException("Unable to load image " + fileName, e);  
	    }  
    }


    public void paint(Graphics g) {
        // set text anti-aliasing
        if (g instanceof Graphics2D) {
            Graphics2D g2 = (Graphics2D)g;
            g2.setRenderingHint(
                RenderingHints.KEY_TEXT_ANTIALIASING,
                RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
        }

        // draw images
        if (imagesLoaded) {
            g.drawImage(bgImage, 0, 0, null);
            drawImage(g, opaqueImage, 0, 0, "Opaque");
            drawImage(g, transparentImage, 320, 0, "Transparent");
            drawImage(g, translucentImage, 0, 300, "Translucent");
            drawImage(g, antiAliasedImage, 320, 300,
                "Translucent (Anti-Aliased)");
        }
        else {
            g.drawString("Loading Images...", 5, FONT_SIZE);
        }
    }


    public void drawImage(Graphics g, Image image, int x, int y,
        String caption)
    {
        g.drawImage(image, x, y, null);
        g.drawString(caption, x + 5, y + FONT_SIZE +
            image.getHeight(null));
    }

}

[]'s