Imagem não aparece? o_o

Olhem meu script, e por favor se alguém souber, o que está errado? o_o

[code]import java.awt.Graphics;
import java.awt.Image;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;

/*

  • Cria a Janela e define suas preferências.
    */

public class Main extends JFrame {

public Main() {
    setSize(400, 400);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setTitle("Fake the Sims ~");
    setLocationRelativeTo(null);
    
    Panel p = new Panel();
    add(p);
}

public static void main(String[] args) {
    Main m = new Main();
    m.setVisible(true);
}

/*
* Adiciona o painel com a imagem do ambiente.
*/

class Panel extends JPanel {

    @Override
    public void paintComponent(Graphics g) {
        Image room = new ImageIcon("room.jpg").getImage();
        g.drawImage(room, 0, 0, this);
    }
}

}[/code]

To com problema na mesma coisa, soh q na hora de trokar imagem…

Eu acho q ai falta o .setVisible = true, ou o camminha que esta entre aspas q vc tem que colocar correto

Cada vez que o componente é redesenhado você carrega a mesma imagem. Seria muito mais interessante carregar uma vez só (no construtor, por exemplo). Teste essa classe:

import java.awt.Graphics;
import java.awt.Image;
import java.io.IOException;
import java.net.URL;

import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

/**
 * Cria a Janela e define suas preferências.
 */
public class MainFrame extends JFrame {

	private static final long serialVersionUID = 1L;

	/**
	 * Cria uma janela que mostrará a imagem. Recebe como parâmetro o caminho da
	 * imagem a ser carregado (deve começar com '/'). Por exemplo, se o caminho
	 * da imagem é 'raíz do código fonte/imagens/img1.png' a String passada
	 * deverá ser "/imagens/img1.png".
	 * 
	 * @param imagePath
	 */
	public MainFrame(String imagePath) {
		setSize(400, 400);
		setDefaultCloseOperation(DISPOSE_ON_CLOSE);
		setTitle("Fake the Sims ~");
		setLocationRelativeTo(null);

		ImagePanel p;
		try {
			p = new ImagePanel(getClass().getResource(imagePath));
			add(p);
		} catch (IOException e) {
			JOptionPane.showMessageDialog(this, "Não foi possível"
					+ " carregar a imagem:\n" + e.getMessage(), "Erro",
					JOptionPane.ERROR_MESSAGE);
		}

	}

	/**
	 * Método main que cria e mostra uma instância da classe MainFrame.
	 * 
	 * @param args
	 *            parâmetros da linha de comando.
	 */
	public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {

			@Override
			public void run() {
				new MainFrame("/room.png").setVisible(true);
			}
		});
	}

	/**
	 * Classe usada para desenhar a imagem.
	 */
	private class ImagePanel extends JPanel {

		private static final long serialVersionUID = 1L;
		/**
		 * A imagem que será desenhada.
		 */
		private Image image;

		/**
		 * Construtor que carrega a imagem a ser desenhada.
		 * 
		 * @param url
		 *            a URL usada para carregar a imagem.
		 * @throws IOException
		 *             se a imagem não puder ser carregada.
		 */
		public ImagePanel(URL url) throws IOException {
			if (url == null) {
				throw new IOException("A imagem especificada não existe.");
			}
			image = ImageIO.read(url);
		}

		/**
		 * Repinta o componente, desenhando a imagem.
		 */
		@Override
		public void paintComponent(Graphics g) {
			g.drawImage(image, 0, 0, this);
		}

	}

}

A nivel de teste eu recomendaria colocar o caminho todo da imagem!! pra ve se e erro de imagem ou do caminho!!

vlw

Tente usar um objeto da classe Graphics2D. Dê um cast no objeto da classe Graphics para obter um da Graphics2D, e utilize-o para desenhar a imagem:

public void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2d = (Graphics2D) g; g2d.drawImage(image, 0, 0, this); }