To ficando louco ou nao, componentes sumindo

olá pessoal
tenho o seguinte código

public class JOpec1001 implements ActionListener, MouseListener, KeyListener {
 
 private JFrame f = new JFrame();
 private JPanel pl = new JPanel();
 
 private JToolBar jBarraFerramentas = new JToolBar();
 private JButton jButtonPrimeiro = new JButton();
 private JButton jButtonAnterior = new JButton();
 private JButton jButtonProximo = new JButton();
 private JButton jButtonUltimo = new JButton();
 private JButton jButtonSalva = new JButton();
 private JButton jButtonExclui = new JButton();
 private JButton jButtonLimpa = new JButton();
 
 public void fechaTelaOpec1001() {
  if (f != null) f.dispose();
 }
 
 public void criarTelaOpec1001() {
 
  f.setSize(500, 430);
  Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
  Dimension windowSize = f.getSize();
  int x = (int) ((screenSize.getWidth() - windowSize.getWidth()) / 2);
  int y = (int) ((screenSize.getHeight() - windowSize.getHeight()) / 2);
  f.setLocation(x, y);
  f.setTitle("JOpec1001 - Inserção de Programação");
  f.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
  f.setResizable(false);
 
  f.addWindowListener(new WindowAdapter() {
   public void windowClosing(WindowEvent e) {
    this.windowClosed();
   }
 
   protected void windowClosed() {
    fechaTelaOpec1001();
   }
  });
 
  pl.setLayout(null);
  pl.setVisible(true);
 
  jButtonPrimeiro.setIcon(new ImageIcon(getClass().getResource("/geral/imagem/primeiro.png")));
  jButtonAnterior.setIcon(new ImageIcon(getClass().getResource("/geral/imagem/anterior.png")));
  jButtonProximo.setIcon(new ImageIcon(getClass().getResource("/geral/imagem/proximo.png")));
  jButtonUltimo.setIcon(new ImageIcon(getClass().getResource("/geral/imagem/ultimo.png")));
  jButtonSalva.setIcon(new ImageIcon(getClass().getResource("/geral/imagem/salvar.png")));
  jButtonExclui.setIcon(new ImageIcon(getClass().getResource("/geral/imagem/excluir.png")));
  jButtonLimpa.setIcon(new ImageIcon(getClass().getResource("/geral/imagem/limpar_tudo.png")));
 
  jButtonPrimeiro.setToolTipText(" Ir para o primeiro registro (F3) ");
  jButtonAnterior.setToolTipText(" Ir para o registro anterior (F7) ");
  jButtonProximo.setToolTipText(" Ir para o próximo registro (F8) ");
  jButtonUltimo.setToolTipText(" Ir para o último registro (F9) ");
  jButtonSalva.setToolTipText(" Salvar (F2) ");
  jButtonExclui.setToolTipText(" Excluir (F6) ");
  jButtonLimpa.setToolTipText(" Limpar Tudo (F5) ");
 
  jButtonSalva.setVisible(true);
  jButtonExclui.setVisible(true);
  jButtonPrimeiro.setVisible(true);
  jButtonAnterior.setVisible(true);
  jButtonProximo.setVisible(true);
  jButtonUltimo.setVisible(true);
  jButtonLimpa.setVisible(true);

  jButtonSalva.setEnabled(false);
  jButtonExclui.setEnabled(false);
  jButtonPrimeiro.setEnabled(true);
  jButtonAnterior.setEnabled(true);
  jButtonProximo.setEnabled(true);
  jButtonUltimo.setEnabled(true);
  jButtonLimpa.setEnabled(true);
  
  jButtonPrimeiro.addActionListener(this);
  jButtonAnterior.addActionListener(this);
  jButtonProximo.addActionListener(this);
  jButtonUltimo.addActionListener(this);
  //jButtonSalva.addActionListener(this);
  //jButtonExclui.addActionListener(this);
  jButtonLimpa.addActionListener(this);
 
  jBarraFerramentas.addSeparator();
  jBarraFerramentas.add(jButtonPrimeiro);
  jBarraFerramentas.add(jButtonAnterior);
  jBarraFerramentas.add(jButtonProximo);
  jBarraFerramentas.add(jButtonUltimo);
  jBarraFerramentas.addSeparator();
  jBarraFerramentas.add(jButtonLimpa);
  jBarraFerramentas.addSeparator();
  jBarraFerramentas.add(jButtonSalva);
  jBarraFerramentas.add(jButtonExclui);
 
  jBarraFerramentas.setFloatable(false);
  jBarraFerramentas.setVisible(true);
  jBarraFerramentas.setBounds(1, 1, 250, 40);
 
  pl.add(jBarraFerramentas, null);
 
 }
 
}

para abrir esta janela clico em um botao numa outra classe, desta maneira

public void actionPerformed(ActionEvent e) {
    Object o = e.getSource();
    if (o == jButtonAbre) {
        JOpec1001.criarTelaOpec1001();
    }
}

se eu abro uma vez e fecho, todos os compentes funcionam
se eu abro pela 2º vez, o jButtonPrimeiro nao aparece
se eu abro pela 3º vez, o jButtonPrimeiro e o jButtonAnterior nao aparece
assim sucessivamente
até que eu abra umas 7 ou 8 vezes e não apareca nada
o que pode ser isso ?
como resolver
obrigado

Vc jah tentou dar um validate() toda vez q abre a sua janela?
seuFraame.validade();

Posso estar enganado, mas se o método criarTelaOpec1001 não é estático, como você chama ele a partir da classe?
Se JOpec1001 dentro do seu ActionListener é uma variável, então talvez esteja aí o seu problema.
Se quer reaproveitar sua janela, use um singleton e não crie e adicione os componentes nela novamente toda vez.
Se não quer reaproveitá-la, então use:

... new JOpec1001().criarTelaOpec1001();

Assim, o frame será recriado toda vez.
P.S.: Estou procurando no seu código aonde adiciona o painel (p1) no frame (f) e não achei.

Marcos,

Gostaria de saber onde você adiciona o JPanel ao JFrame?
f.add(pl);

E também como você chama JOpec1001.criarTelaOpec1001(); Se não é um método stático?

A princípio aqui funcionou.

[quote=jean.zunino]Marcos,

Gostaria de saber onde você adiciona o JPanel ao JFrame?
f.add(pl);

E também como você chama JOpec1001.criarTelaOpec1001(); Se não é um método stático?

A princípio aqui funcionou.[/quote]

Desculpa demorei para acabar de escrever e enviar a mensagem pois estava testando, mas já comentaram acima.

o add esta aqui sim
eu que esqueci de colocar no codigo acima antes de postar

		f.add(pl);
		f.setVisible(true);
		f.validate();

e dae coloquei o validate e nao resolveu

visola
deu certo
mudei a chamada
resolvido

new JOpec1001().criarTelaOpec1001();

obrigado