Não estou conseguindo fazer aparecer imagens num Panel

Olá pessoal. Estou fazendo um Menu inicial de jogo para o meu projeto de fim de semestre de fundamentos 1. O problema é que eu adiciono as imagens e elas não estão aparecendo. Poderiam tentar localizar onde está meu erro? O código está assim:

[code]import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.;
import javax.swing.
;
public class JogoMenu {

public static void main(String[] args) {
JFrame menu = new JFrame();
menu.setSize(640,480);
menu.setResizable(false);
menu.setVisible(true);
menu.setDefaultCloseOperation(menu.EXIT_ON_CLOSE);
menu.setLayout(null);
JLabel titulo = new JLabel("Space Fighters");
titulo.setBounds(100, 50, 100, 100);
JButton b1, b2, b3;
b1 = new JButton("Novo Jogo");
b2 = new JButton("High Scores");
b3 = new JButton("Sair");
b1.setBounds(410, 280, 150, 50);
b2.setBounds(440, 340, 150, 50);
b3.setBounds(470, 400, 150, 50);
Listener newgame = new Listener();
Listener2 highscores = new Listener2();
Listener3 saida = new Listener3();
b3.addActionListener(saida);
menu.add(titulo);
menu.add(b1);
menu.add(b2);
menu.add(b3);
}

}

class Listener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
//chama o método de execução do jogo
}
}

class Listener2 implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
//Estatistica.openFile();
}
}

class Listener3 implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
System.exit(1);
}
}

class MyFrame extends JFrame
{
public MyFrame()
{
MyPanel mp = new MyPanel();
mp.setSize(640,480);
mp.setBackground(new Color(0,0,0));
getContentPane().add(mp);
}
}

class MyPanel extends JPanel
{
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
Image im = (new ImageIcon(getClass().getResource(“C:/Users/Windows/Documents/NetBeansProjects/JogoMenu3/menu.jpg”))).getImage();
g.drawImage(im, 100, 50, null);

}        

}

[/code]

Tudo bem lpdon?

cara eu nao to vendo aonde voce esta chamando no seu main os metodo JFrame que voce cria la embaixo…
talvez tenha que usa-los…e instanciar objetos do painel para que a imagem seja exibida.

e outra coisa , voce cria uma imagem mas aplica ela aonde?

nao seria talvez mais facil voce criar um painel adicionar ele no frame e depois adicionar a imagem no panel…

nao entendi mto suas classes…mesmo sabendo que esta sobre escrevendo os metodos do frame e panel

Já dei uma arrumada aqui. Agora só cai num problema: chamar o método da MyPanel no main. Eu preciso de um Graphics dentro da construtora, mas eu não sei o que eu escrevo nela. Ex (main): mp.paintComponent(g); Que que eu coloco nesse g?

nao sei haha…

nao tenho mto as manha com essas coisas graficas ai nao…
mas nao seria o componente aonde voce vai colocar a figura?

Já dei um jeito. Agora surgiu um problema: eu tenho que passar o mouse por cima dos botões pra eles aparecerem :confused: Alguma ajuda?

setVisible(true) e setVisible(false) ajudam??

abraco

[quote=gabrielmassote]setVisible(true) e setVisible(false) ajudam??

abraco[/quote]

Ainda continua na mesmo :confused:

mas me explica o problema direito, que voce quer resolver…

Eu coloquei 3 botões. Mas o segundo e o terceiro só aparecem depois de eu passa o mouse por cima deles :confused:

creio que nao tem como…

pq para pegar uma acao no botao ele tem que estar ativado…
uma solucao seria mapear o local aonde que voce quer q apareca o botao, ai quando passar o mouse em cima desses lugares aparece o botao 2 ou 3.
uma forma seria pegar getX e getY de acao do mouse.

Mas eu queria que aparecesse tudo quando eu executasse o arquivo. O problema é esse: o segundo e o terceiro só tão aparecendo depois que eu passo o mouse por cima deles, mas eu queria que aparecessem normal, de primeira, exatamente como o primeiro.

ahhh ta haha…

eu achei que era para aparecer depois…
manda o codigo ai…pra da uma olhada…

O atual tá assim:

[code]import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.;
import javax.swing.
;

public class JogoMenu {

public static void main(String[] args) {
MyFrame menu = new MyFrame();
menu.setSize(640,480);
//menu.setResizable(false);
menu.setDefaultCloseOperation(menu.EXIT_ON_CLOSE);
menu.setLayout(null);
JLabel titulo = new JLabel("Space Fighters");
titulo.setBounds(100, 50, 100, 100);
JButton b1, b2, b3;
b1 = new JButton("Novo Jogo");
b2 = new JButton("High Scores");
b3 = new JButton("Sair");
b1.setBounds(410, 280, 150, 50);
b2.setBounds(440, 340, 150, 50);
b3.setBounds(470, 400, 150, 50);
Listener newgame = new Listener();
Listener2 highscores = new Listener2();
Listener3 saida = new Listener3();
b3.addActionListener(saida);
menu.add(titulo);
menu.add(b1);
menu.add(b2);
menu.add(b3);
menu.setVisible(true);
}

}

class Listener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
//chama o método de execução do jogo
}
}

class Listener2 implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
//Estatistica.openFile();
}
}

class Listener3 implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
System.exit(1);
}
}

class MyFrame extends JFrame
{
public MyFrame()
{
MyPanel mp = new MyPanel();
mp.setSize(640, 480);
getContentPane().add(mp);
}
}

class MyPanel extends JPanel
{
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
Image fundo = (new ImageIcon(getClass().getResource(“fundo.jpg”))).getImage();
Image menu2 = (new ImageIcon(getClass().getResource(“menu2.png”))).getImage();
g.drawImage(fundo, 0, 0, 640, 480, null);
g.drawImage(menu2, 60, 50, 400, 80, null);
}
}

[/code]

cara eu fiz sua classe de novo, utilizando construtores e tals…ai deu o mesmo pau, ai extendi a classe jogo para os seus Frames, tambem deu pau…ai resolvi extender a JFrame…ai deu certo…

entao o problema esta nas duas classes suas que criam o painel e o frame…

eu sugiro voce a colocar um painel no JFrame…e nesse painel adicionar as imagens…

o código que fiz e q ta aparecendo os botoes é esse…so que sem as imagens…

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.*;
import javax.swing.*;

public class JogoMenu extends JFrame{
	private JButton b1, b2, b3;
	private JLabel titulo;
   	private Listener newgame;
    private Listener2 highscores;
    private Listener3 saida;
   
   public JogoMenu(){
   	
   	this.setSize(640,480);
    //menu.setResizable(false);
    this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    this.setLayout(null);
   	
    newgame = new Listener();
    highscores = new Listener2();
    saida = new Listener3();
   		
   	titulo = new JLabel("Space Fighters");
    titulo.setBounds(100, 50, 100, 100);
    
    b1 = new JButton("Novo Jogo");
    b2 = new JButton("High Scores");
    b3 = new JButton("Sair");
    b1.setBounds(410, 280, 150, 50);
    b2.setBounds(440, 340, 150, 50);
    b3.setBounds(470, 400, 150, 50);
   	b3.addActionListener(saida);
   	
   	
   	this.add(titulo);
    this.add(b1);
    this.add(b2);
    this.add(b3);
   	
   }
    public static void main(String[] args) {
    
    	JogoMenu m = new JogoMenu();
    	m.setVisible(true);
    }

}

class Listener implements ActionListener
{
    public void actionPerformed(ActionEvent e)
    {
        //chama o método de execução do jogo
    }        
}

class Listener2 implements ActionListener
{
    public void actionPerformed(ActionEvent e)
    {
        //Estatistica.openFile();
    }        
}

class Listener3 implements ActionListener
{
    public void actionPerformed(ActionEvent e)
    {
        System.exit(1);
    }        
}

Sem imagens tudo funciona numa boa. A partir do momento que coloco getContentPane().add(mp); os problemas começam :confused:

coloca a imagem direto no painel e o painel direto no frame…sem fazer essas coisas que voce esta fazendo de sobreescrever metodos ja feitos…que funciona perfeito…

ja fiz programas assim e funcionaram de boa…vai por mim