JTextField e JTabbedPane

Bom dia,
Sou iniciante em Java e estou tendo o seguinte problema: eu criei uma JDialog que tem varias abas. O problema eh que que o painel das abas sao carregados corretamentes somente a primeira vez que eu entro nelas. Quando eu saio de uma aba e depois eu tento entrar nela de novo, alguns JTextField desaparecem. Eu nao sei se eu fui clara… vejam meu codigo:

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;

import javax.swing.*;
import javax.swing.border.Border;

public class DialogoEquipementGenerique extends JDialog implements
		ActionListener {
	JPanel panel, panel1, panel2, panel3, panel4;
	JPanel centro, centro1;

	public DialogoEquipementGenerique(JDialog parent, String title,
			boolean modal) {
		super(parent, title, modal);
		this.setSize(600, 500);
		this.setLocationRelativeTo(null);
		this.setResizable(false);
		

		JTabbedPane tabbedPane = new JTabbedPane();

		createPage1();
		createPage2();
		createPage3();
		createPage4();

		tabbedPane.addTab("Compute", panel);
		tabbedPane.setMnemonicAt(0, KeyEvent.VK_1);


		tabbedPane.addTab("Stockage", panel1);
		tabbedPane.setMnemonicAt(0, KeyEvent.VK_2);
	

		tabbedPane.addTab("Power Ressource", panel2);
		tabbedPane.setMnemonicAt(0, KeyEvent.VK_3);

		tabbedPane.addTab("Interface", panel3);
		tabbedPane.setMnemonicAt(0, KeyEvent.VK_4);

		tabbedPane.addTab("Etats Globaux", panel4);
		tabbedPane.setMnemonicAt(0, KeyEvent.VK_5);

		add(tabbedPane);

		this.setVisible(true);
		this.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);

	}

	public void createPage1() {

		panel = new JPanel(new BorderLayout());
		this.setPreferredSize(new Dimension(600, 500));
		panel.setPreferredSize(new Dimension(600, 500));
		JPanel gauche = new JPanel(new GridLayout(4, 1));

		JLabel quantite = new JLabel("           Quantité :           1     ");

		JPanel esquerda = new JPanel();
		gauche.setBorder(BorderFactory
				.createTitledBorder("Paramètres généraux"));
		gauche.setPreferredSize(new Dimension(200, 350));

		centro = new JPanel();
		centro.setBorder(BorderFactory.createTitledBorder("Consommation"));
		centro.setPreferredSize(new Dimension(200, 350));

		JPanel direita = new JPanel();
		direita.setBorder(BorderFactory.createTitledBorder("Composant"));
		direita.setPreferredSize(new Dimension(200, 350));

		ImageIcon novo = new ImageIcon(getClass().getResource("cpu.png"));
		JLabel photo = new JLabel();
		photo.setIcon(novo);
		direita.add(photo);

		JLabel etats = new JLabel("     N. d'états:             4    ");
		JLabel performances = new JLabel("N. de performances: ");
		JButton OK = new JButton("OK");
		OK.addActionListener(this);
		JPanel botton = new JPanel();
		botton.add(OK);

		TextField performance = new TextField(2);
		esquerda.add(etats);

		gauche.add(quantite);
		gauche.add(esquerda);

		JPanel esquerda1 = new JPanel();
		esquerda1.add(performances);
		esquerda1.add(performance);

		gauche.add(esquerda1);
		gauche.add(botton);

		panel.add(gauche, BorderLayout.WEST);
		panel.add(centro, BorderLayout.CENTER);
		panel.add(direita, BorderLayout.EAST);

	}

	public void createPage2() {

		panel1 = new JPanel(new BorderLayout());
		this.setPreferredSize(new Dimension(600, 500));
		panel1.setPreferredSize(new Dimension(600, 500));
		JPanel gauche = new JPanel(new GridLayout(4, 1));

		JLabel quantite = new JLabel("           Quantité :           1     ");

		JPanel esquerda = new JPanel();
		gauche.setBorder(BorderFactory
				.createTitledBorder("Paramètres généraux"));
		gauche.setPreferredSize(new Dimension(200, 350));

		centro1 = new JPanel();
		centro1.setBorder(BorderFactory.createTitledBorder("Consommation"));
		centro1.setPreferredSize(new Dimension(200, 350));

		JPanel direita = new JPanel();
		direita.setBorder(BorderFactory.createTitledBorder("Composant"));
		direita.setPreferredSize(new Dimension(200, 350));

		ImageIcon novo = new ImageIcon(getClass().getResource("memory.png"));
		JLabel photo = new JLabel();
		photo.setIcon(novo);
		direita.add(photo);

		JLabel etats = new JLabel("   N. d'états:          ");
		JLabel performances = new JLabel("N. de performances: ");
		JButton OK1 = new JButton("OK");
		OK1.addActionListener(this);
		JPanel botton = new JPanel();
		botton.add(OK1);

		TextField estados = new TextField(2);
		System.out.println(estados.getPreferredSize());
		TextField performance = new TextField(2);
		esquerda.add(etats);
		esquerda.add(estados);

		gauche.add(quantite);
		gauche.add(esquerda);

		JPanel esquerda1 = new JPanel();
		esquerda1.add(performances);
		esquerda1.add(performance);
		// esquerda1.add(OK1);
		gauche.add(esquerda1);
		gauche.add(botton);

		panel1.add(gauche, BorderLayout.WEST);
		panel1.add(centro1, BorderLayout.CENTER);
		panel1.add(direita, BorderLayout.EAST);

	}

	public void createPage3() {
		panel2 = new JPanel(new BorderLayout());
		this.setPreferredSize(new Dimension(600, 500));
		panel2.setPreferredSize(new Dimension(600, 500));
		JPanel oeste = new JPanel(new GridLayout(3, 1));

		JLabel quantite = new JLabel("           Quantité :           1     ");

		JPanel esquerda = new JPanel();
		esquerda.setBorder(BorderFactory
				.createTitledBorder("Paramètres généraux"));
		esquerda.setPreferredSize(new Dimension(300, 250));
		esquerda.add(quantite);

		JPanel esquerda2 = new JPanel();
		esquerda2.setBorder(BorderFactory.createTitledBorder("Consommation"));
		esquerda2.setPreferredSize(new Dimension(300, 250));
		JLabel On = new JLabel("On      :");
		JLabel unite = new JLabel("W");

		JTextField valeur = new JTextField(2);
		esquerda2.add(On);
		esquerda2.add(valeur);
		esquerda2.add(unite);

		JPanel leste = new JPanel();
		leste.setBorder(BorderFactory.createTitledBorder("Composant"));
		leste.setPreferredSize(new Dimension(290, 400));

		ImageIcon novo = new ImageIcon(getClass().getResource("power.png"));
		JLabel photo = new JLabel();
		photo.setIcon(novo);
		leste.add(photo);

		JButton OK = new JButton("OK");
		OK.addActionListener(this);
		JPanel botton = new JPanel();
		botton.add(OK);

		oeste.add(esquerda);
		oeste.add(esquerda2);
		oeste.add(botton);

		panel2.add(oeste, BorderLayout.WEST);
		// panel2.add(centro, BorderLayout.CENTER);
		panel2.add(leste, BorderLayout.EAST);

	}

	public void createPage4() {
		panel3 = new JPanel(new BorderLayout());

	}

	public void createPage5() {

	}

	@Override
	public void actionPerformed(ActionEvent arg0) {
		int valor = 4;
		centro.removeAll();
		JLabel[] labels = new JLabel[valor];
		// centro = new JPanel();
		centro.setBorder(BorderFactory.createTitledBorder("Consommation"));
		centro.setPreferredSize(new Dimension(200, 350));
		System.out.println(valor);
		centro.setLayout(new GridLayout(valor + 1, 1));
		for (int i = 0; i < valor; i++) {
			String nom = String.valueOf(i);
			nom = "C" + nom + "       :";
			System.out.println(nom);
			JLabel nome = new JLabel(nom);
			labels[i] = nome;
			// centro.add(nome);
			System.out.println(nom);
			// panel.add(centro, BorderLayout.EAST);
			System.out.println(nom);

		}
		ajouter(labels);
		// ajouter(centro);

	}

	public void ajouter(JLabel[] labels) {
		JTextField[] textos;
		textos = new JTextField[labels.length];
		for (int i = 0; i < labels.length; i++) {
			// this.initComponent();
			JPanel k = new JPanel();
			k.add(labels[i]);
			textos[i] = new JTextField(2);
			JLabel potencia = new JLabel("W");
			k.add(textos[i]);
			k.add(potencia);
			System.out.println(i);
			centro.add(k);
			// panel.add(centro);
			// this.pack();
			// this.setVisible(true);

		}
		JPanel botao = new JPanel();
		JButton butooon = new JButton("OK");
		botao.add(butooon);
		centro.add(botao);
		panel.add(centro);
	
		this.pack();

		this.setVisible(true);

	}

}

Desde ja agradeco