Onglets dynamiques avec JTabbedPane

Résolu
yannOpenGL Messages postés 141 Date d'inscription samedi 4 février 2012 Statut Membre Dernière intervention 3 avril 2013 - 3 juil. 2012 à 11:48
yannOpenGL Messages postés 141 Date d'inscription samedi 4 février 2012 Statut Membre Dernière intervention 3 avril 2013 - 3 juil. 2012 à 17:08
Bonjour,

J'ai une première fenêtre avec 3 Jcombobox (il pourrait y en avoir plus dans une prochaine version du logiciel) et un des boutons appelle une autre fenêtre où je souhaite utiliser un onglet par contenu de Jcombobox.

Pour simplifier, on va dire que la Jcombobox peut avoir 2 valeurs. En fonction de cette valeur je désire avoir tel ou tel panel dans l'onglet correspondant.

J'arrive à avoir le bon nombre d'onglet avec le nom de la valeurs des Jcombobox avec ce code (situé dans le constructeur) :
createPage1();
createPage2();
 
tabbedPane = new JTabbedPane(JTabbedPane.TOP);
 
for(int i=0 ; i<operations.length ; i++)
{
     if(operations[i].equals("Valeur1 JCobobox"))
     {
     	tabbedPane.addTab( operations[i], panelGroupement1[i]);
     }
     else tabbedPane.addTab( operations[i], panelGroupement2[i]);
}
topPanel.add(tabbedPane, BorderLayout.CENTER );


Les fonctions createPage1 et createPage2 contiennent tous les composants qui devraient être dans les onglets.
public void createPage1(){
 
panelGroupement1[0] = new JPanel(new GridBagLayout());
panelGroupement1[0].add(...);
...
}
public void createPage2(){
 
panelGroupement2[0] = new JPanel(new GridBagLayout());
panelGroupement2[0].add(...);
...
}


Mon problème est que seuls les onglets s'affichent mais pas leur contenu.
Quelqu'un sait-il pourquoi ?

Merci.
Bonne journée.
A voir également:

9 réponses

yannOpenGL Messages postés 141 Date d'inscription samedi 4 février 2012 Statut Membre Dernière intervention 3 avril 2013
3 juil. 2012 à 17:08
Finalement, j'ai fais autrement, au lieu d'avoir des onglet, j'enregistre les données que je souhaite garder dans un fichier temporaire et je réaffiche la fenêtre pour enregistrer l'opération suivante.
Ça marche très bien comme ceci.

Merci pour votre aide.
3
cormandyr Messages postés 600 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 8 juillet 2016 12
3 juil. 2012 à 12:04
Salut,

d'après ce que tu décris, je te conseillerai peut-être de voir avec le CardLayout...

sinon avec ton code, si tu affiches l'un de tes panneaux dans une JFrame, juste pour voir ce qu'il t'affiche, tu as qqch?
0
yannOpenGL Messages postés 141 Date d'inscription samedi 4 février 2012 Statut Membre Dernière intervention 3 avril 2013
3 juil. 2012 à 12:19
Merci pour la réponse.

Je préfère utiliser le tabbed pane au CardLayout surtout qu’apparemment il font la même chose saut qu'un à des onglets et l'autre une combobox.

En fait au début, je n'avais pas les onglets et tout marchait. J'ai gardé exactement le même code.
J'ai seulement remplacer mon panel principal par le panel panelGroupement1[0].
0
cormandyr Messages postés 600 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 8 juillet 2016 12
3 juil. 2012 à 12:22
le premier onglet affiché lors du lancement de ton GUI, il est vide aussi?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yannOpenGL Messages postés 141 Date d'inscription samedi 4 février 2012 Statut Membre Dernière intervention 3 avril 2013
3 juil. 2012 à 13:49
Oui, ils sont tous vide.
0
cormandyr Messages postés 600 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 8 juillet 2016 12
3 juil. 2012 à 13:54
on peut voir le code GUI?
0
yannOpenGL Messages postés 141 Date d'inscription samedi 4 février 2012 Statut Membre Dernière intervention 3 avril 2013
3 juil. 2012 à 14:09
Je pense que tu parle de ceci :
J'ai enlevé la suite du code car il s'agit du remplissage de tous les panels suivant et n'apporte donc rien à part alourdir la visibilité.
S'il y a une erreur, ça ne peut être qu'avec une ligne où il y a panelGroupementAutres[0] car toutes les autres n'ont subie aucune modification depuis la version sans onglet.

public void createPage1(){

panelGroupementAutres[0] = new JPanel(new GridBagLayout());
panelGroupementAutres[0].setOpaque(false);		


Dimension sizePanels = new Dimension(200, 200);
        		

constraintsPrincipal.gridx = 0;
constraintsPrincipal.gridy = 0;
constraintsPrincipal.gridwidth = 3;
constraintsPrincipal.gridheight = 1;

                constraintsPrincipal.weighty = 1;
constraintsPrincipal.insets = new Insets(10,10,0,10);
constraintsPrincipal.ipadx = 300;
constraintsPrincipal.ipady = 10;
constraintsPrincipal.fill = GridBagConstraints.HORIZONTAL;

panelExploitation.setBorder(BorderFactory.createTitledBorder(""));
panelExploitation.setOpaque(false);
panelGroupementAutres[0].add(panelExploitation,constraintsPrincipal);


constraintsPrincipal.gridx = 0;
constraintsPrincipal.gridy = 1;
constraintsPrincipal.gridwidth = 1;
constraintsPrincipal.gridheight = 1;
        constraintsPrincipal.weightx = 1;
        constraintsPrincipal.weighty = 1;
constraintsPrincipal.ipadx = 200;
constraintsPrincipal.ipady = 300;


panelDetailBouilie.setBorder(BorderFactory.createTitledBorder("Détail bouilie"));
panelDetailBouilie.setOpaque(false);
panelDetailBouilie.setPreferredSize(sizePanels);
panelGroupementAutres[0].add(panelDetailBouilie,constraintsPrincipal);


constraintsPrincipal.gridx = 1;
constraintsPrincipal.gridy = 1;
constraintsPrincipal.gridwidth = 1;
constraintsPrincipal.gridheight = 1;
        constraintsPrincipal.weightx = 1;
        constraintsPrincipal.weighty = 1;


panelChoixParcelle.setBorder(BorderFactory.createTitledBorder("Choix parcelles"));
panelChoixParcelle.setOpaque(false);
panelChoixParcelle.setPreferredSize(sizePanels);
panelGroupementAutres[0].add(panelChoixParcelle,constraintsPrincipal);


constraintsPrincipal.gridx = 0;
constraintsPrincipal.gridy = 2;
constraintsPrincipal.gridwidth = 3;
constraintsPrincipal.gridheight = 1;
        constraintsPrincipal.weightx = 1;
        constraintsPrincipal.weighty = 1;
constraintsPrincipal.ipadx = 300;
constraintsPrincipal.ipady = 30;
constraintsPrincipal.fill = GridBagConstraints.HORIZONTAL;

panelValidation.setOpaque(false);
panelGroupementAutres[0].add(panelValidation,constraintsPrincipal);

}
0
cormandyr Messages postés 600 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 8 juillet 2016 12
3 juil. 2012 à 14:22
oui et le code de ton composant principale, avec la combo, l'ajout des listeners, ...
ainsi que les déclarations de tes variables ^^
0
yannOpenGL Messages postés 141 Date d'inscription samedi 4 février 2012 Statut Membre Dernière intervention 3 avril 2013
3 juil. 2012 à 14:41
Je peux t'envoyer tout ça de manière privé ?
0
Rejoignez-nous