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