[Resolvido] Botões não aparecem no JPanel, mas estão lá

[code]package campoMinado.interfaceCampo;

import java.awt.BorderLayout;
import java.awt.GridLayout;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;

import javax.swing.JPanel;

import campoMinado.handler.HandlerCampo;

public class Projeto{
private static JFrame frame;
private static final long serialVersionUID = 1L;
private static JButtonEditado[][] buttonEditados = new JButtonEditado[10][10];
private static JPanel jPanel;
private JMenu menu, menu2;
private static JMenuItem menuItem,menuItem2,menuItem3;
private HandlerCampo handlerCampo = new HandlerCampo();
private int a = 0;
//Construtor da classe
public Projeto() {
initComponent();
}
//Método construtor da classe
public void initComponent(){
frame = new JFrame(“Campo Minado”);
frame.setLayout(new BorderLayout());
jPanel = montaCampo();
frame.add(jPanel, BorderLayout.CENTER);
frame.setJMenuBar(montaMenu());
// Adição dos ActionListeners
for (int l = 0; l < 10 ; l++)
for(int c = 0; c < 10; c++)
buttonEditados[l][c].addActionListener(handlerCampo);
menuItem.addActionListener(handlerCampo);
menuItem2.addActionListener(handlerCampo);
menuItem3.addActionListener(handlerCampo);
frame.setVisible(true);
frame.setSize(350,350);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

public JPanel montaCampo() {
	JPanel panel = new JPanel(new GridLayout(10,10));
	for (int l = 0; l < 10; l++)
		for(int c = 0; c < 10; c++){
		buttonEditados[l][c] = new JButtonEditado("Oi"+(a++));
		}
	for(int l = 0; l < 10; l++)
		for(int c = 0; c < 10; c++){
			buttonEditados[l][c].setActionCommand("Botão"+(a++));		
			}
	for (int l = 0; l < 10; l++)
		for(int c = 0; c < 10; c++){
		panel.add(buttonEditados[l][c]);
		}
	return panel;
}

public JMenuBar montaMenu() {
	JMenuBar menuBar = new JMenuBar();
	menu = new JMenu("Opções");
	menu2 = new JMenu("Niveis");
	menu2.add(menuItem = new JMenuItem("Fácil"));
	menu2.add(menuItem2 = new JMenuItem("Médio"));
	menu2.add(menuItem3 = new JMenuItem("Difícil"));
	menu.add(menu2);
	menuBar.add(menu);
	return menuBar;
}
/*Método criado para a atualizacao dos botoes, quando é escolhido a dificuldade do jogo.
 * 
 */
public static void atualizaCampo(int colunaMODE, int linhaMODE) {
	jPanel.removeAll();
	jPanel.setLayout(new GridLayout(colunaMODE,linhaMODE));
	for (int l = 0; l < linhaMODE ; l++)
		for(int c = 0; c < colunaMODE; c++)
		jPanel.add(buttonEditados[l][c]);
	frame.repaint();
	frame.validate();
}

public static JButtonEditado[][] getButtons() {
	return buttonEditados;
}
public static JMenuItem getMenuItem() {
	return menuItem;
}
public static JMenuItem getMenuItem2() {
	return menuItem2;
}
public static JMenuItem getMenuItem3() {
	return menuItem3;
}

}[/code]

Acredito que o erro esteja no método montaMenu();
O JPanel exibe somente um botão, mas se percorro o jpanel com o mouse esse único botão se transforma no botão que deveria estar aparecendo no jpanel.

Diego

tente algo como isso no construtor

setVisible(true);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		initialize();
		this.pack();

Não ponha os metodos de seu Jframe principal antes da criação de novos componentes.

//Seu código blábláblá...
 frame.setVisible(true);  
        frame.setSize(350,350);  
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  

Há alguns desenvolvedores java que abominam o netbeans.
Porém, foi com ele que eu aprendi que, variáveis locais podem fazer elementos swing desaparecem.

Mateus tentei mas não mudou nada. E neste caso o uso do pack() não é a melhor opção.

drsmachado, o que você quis dizer com variáveis locais?

Obrigados a todos, mas já resolvi o erro.

Ele não estava na GUI e sim em uma classe que eu tinha criado

[code]package GUI;

import javax.swing.Icon;
import javax.swing.JButton;
/*

  • Classe criada para a simulacao de um botao como uma bomba do campo minado

  • @bombasAdjacentes = quantidades de bombas ao redor deste botao

  • @X = posicao do botao no eixo X

  • @Y = posicao do botao no eixo Y
    */
    public class JButtonEditado extends JButton {
    private static final long serialVersionUID = 1L;
    private boolean bomb;
    private int bombasAdjacentes,X,Y;

    public JButtonEditado(){
    super();
    }
    public JButtonEditado(String string, Icon icone) {
    super(string, icone);
    }

    public JButtonEditado(String string) {
    super(string);
    }

    public void setBombasAdjacentes(int b) {
    this.bombasAdjacentes = b;
    }

    public int getBombasAdjacentes() {
    return bombasAdjacentes;
    }

    public void setBomb(boolean b) {
    this.bomb = b;
    }

    public boolean isBomb() {
    return bomb;
    }

    public int getPosicaoX() {
    return X;
    }

    public void setPosicaoX(int x) {
    X = x;
    }

    public int getPosicaoY() {
    return Y;
    }

    public void setPosicaoY(int y) {
    Y = y;
    }
    }[/code]

Estes ultimos 4 métodos estavam assim

[code]
public int getX() {
return X;
}

public void setX(int x) {
	X = x;
}

public int getY() {
	return Y;
}

public void setY(int y) {
	Y = y;
}

}[/code]

Sem perceber, sobrescrevi os métodos da classe JButton, e isto fez com que eles não conseguissem ser dispostos um ao lado do outro.