Onglets dynamiques avec JTabbedPane [Résolu]

Signaler
Messages postés
141
Date d'inscription
samedi 4 février 2012
Statut
Membre
Dernière intervention
3 avril 2013
-
Messages postés
141
Date d'inscription
samedi 4 février 2012
Statut
Membre
Dernière intervention
3 avril 2013
-
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.

9 réponses

Messages postés
141
Date d'inscription
samedi 4 février 2012
Statut
Membre
Dernière intervention
3 avril 2013

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.
Messages postés
600
Date d'inscription
samedi 20 mai 2006
Statut
Membre
Dernière intervention
8 juillet 2016
9
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?
Messages postés
141
Date d'inscription
samedi 4 février 2012
Statut
Membre
Dernière intervention
3 avril 2013

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].
Messages postés
600
Date d'inscription
samedi 20 mai 2006
Statut
Membre
Dernière intervention
8 juillet 2016
9
le premier onglet affiché lors du lancement de ton GUI, il est vide aussi?
Messages postés
141
Date d'inscription
samedi 4 février 2012
Statut
Membre
Dernière intervention
3 avril 2013

Oui, ils sont tous vide.
Messages postés
600
Date d'inscription
samedi 20 mai 2006
Statut
Membre
Dernière intervention
8 juillet 2016
9
on peut voir le code GUI?
Messages postés
141
Date d'inscription
samedi 4 février 2012
Statut
Membre
Dernière intervention
3 avril 2013

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);

}
Messages postés
600
Date d'inscription
samedi 20 mai 2006
Statut
Membre
Dernière intervention
8 juillet 2016
9
oui et le code de ton composant principale, avec la combo, l'ajout des listeners, ...
ainsi que les déclarations de tes variables ^^
Messages postés
141
Date d'inscription
samedi 4 février 2012
Statut
Membre
Dernière intervention
3 avril 2013

Je peux t'envoyer tout ça de manière privé ?