1 JPanel sur 2 qui s'affiche
Bonjour,
J'ai 2 classes qui héritent de JPanel et les fonctions de mes onglets doivent retourner un JPanel, je me suis donc contenté de créer une instance de mes classes et de faire un simple return. Dans mes classes, j'ai mis le code où je créé mes éléments et les affiche dans le constructeur de la classe.
Pour ma première classe, je n'ai aucun problème: tout s'affiche et si j'entre des valeurs et que je lance les calculs, tout se fait normalement.
Mon problème vient du 2eme onglet: Lorsque je clique sur celui-ci, aucun élément ne s'affiche (je n'ai qu'un JTextField et un JLabel pour l'instant). De plus, le fond du JPanel de cet onglet est tout bleu et je ne comprend pas pourquoi. L'autre fait bizarre est que ma fonction paint fonctionne bien.
Donc au final, sur mon 2eme onglet, j'ai un fond bleu, un rectangle noir et aucun composant.
Voici le code important:
Code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
| public class EspFrame extends JFrame implements StateChanged {
public EspFrame(){
super();
build();//On initialise notre fenêtre
}
private void build(){
setTitle("AT calcul"); //On donne un titre à l'application
setSize(650,700); //On donne une taille à notre fenêtre
setLocationRelativeTo(null); //On centre la fenêtre sur l'écran
setResizable(false); //On interdit la redimensionnement de la fenêtre
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //On dit à l'application de se fermer lors du clic sur la croix
setContentPane(getOnglets());
}
private JTabbedPane getOnglets()
{
if(Onglets== null)
{
try
{
Onglets = new JTabbedPane(JTabbedPane.TOP);
Onglets.addTab("Tole", null, getOngletTole(), null); //
Onglets.addTab("Lettres Découpées", null, getOngletLettre(), null); //
//Onglets.addTab("Onglet 3", null, getOnglet3(), null); //
Onglets.addChangeListener(this);
} catch (java.lang.Throwable e)
{
System.out.println(e);
// TODO: Something
}
}
return Onglets;
}
private JPanel getOngletLettre()
{
OngletLettre ongletL = new OngletLettre();
return ongletL;
}
private JPanel getOngletTole(){
OngletTole ongletT = new OngletTole();
return ongletT;
}
}
// Classe OngletLettre
// C'est pour cette classe que le fond est Bleu et que rien ne s'affiche
public class OngletLettre extends JPanel implements ActionListener, ItemListener{
private JPanel panel;
private JLabel label;
private JTextField textFieldHauteurLettre;
public OngletLettre()
{
this.setLayout(null);
try{
Insets insets = this.getInsets();
label = new JLabel("test");
this.add(label);
Dimension l1 = label.getPreferredSize();
label.setBounds(150 + insets.left, 150 + insets.top, l1.width, l1.height);
textFieldHauteurLettre = new JTextField(5);
this.add(textFieldHauteurLettre);
Dimension tf1 = textFieldHauteurLettre.getPreferredSize();
textFieldHauteurLettre.setBounds(150 + insets.left, 200 + insets.top, tf1.width, tf1.height);
}
catch(Exception e)
{
System.out.println(e);
}
}
}
//Classe OngletTole
// C'est le panel qui s'affiche au démarrage et qui fonctionne normalement
public class OngletTole extends JPanel implements ActionListener, ItemListener, FocusListener {
public OngletTole()
{
this.setLayout(null);
textFieldLarg = new JTextField(5);
textFieldHauteur = new JTextField(5);
labelLarg = new JLabel("Largeur");
labelHauteur = new JLabel("Hauteur");
//Tout le reste la création des composants
}
} |
La classe OngletTole contient beaucoup plus de code mais je ne pense pas que ce soit important pour mon problème actuel.
Merci d'avance et merci a ceux qui suivent l'évolution de mon probleme =x