Onglets dynamiques avec JTabbedPane [Résolu]

yannOpenGL 141 Messages postés samedi 4 février 2012Date d'inscription 3 avril 2013 Dernière intervention - 3 juil. 2012 à 11:48 - Dernière réponse : yannOpenGL 141 Messages postés samedi 4 février 2012Date d'inscription 3 avril 2013 Dernière intervention
- 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.
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
yannOpenGL 141 Messages postés samedi 4 février 2012Date d'inscription 3 avril 2013 Dernière intervention - 3 juil. 2012 à 17:08
3
Merci
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.

Merci yannOpenGL 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 120 internautes ce mois-ci

Commenter la réponse de yannOpenGL
cormandyr 600 Messages postés samedi 20 mai 2006Date d'inscription 8 juillet 2016 Dernière intervention - 3 juil. 2012 à 12:04
0
Merci
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?
Commenter la réponse de cormandyr
yannOpenGL 141 Messages postés samedi 4 février 2012Date d'inscription 3 avril 2013 Dernière intervention - 3 juil. 2012 à 12:19
0
Merci
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].
Commenter la réponse de yannOpenGL
cormandyr 600 Messages postés samedi 20 mai 2006Date d'inscription 8 juillet 2016 Dernière intervention - 3 juil. 2012 à 12:22
0
Merci
le premier onglet affiché lors du lancement de ton GUI, il est vide aussi?
Commenter la réponse de cormandyr
yannOpenGL 141 Messages postés samedi 4 février 2012Date d'inscription 3 avril 2013 Dernière intervention - 3 juil. 2012 à 13:49
0
Merci
Oui, ils sont tous vide.
Commenter la réponse de yannOpenGL
cormandyr 600 Messages postés samedi 20 mai 2006Date d'inscription 8 juillet 2016 Dernière intervention - 3 juil. 2012 à 13:54
0
Merci
on peut voir le code GUI?
Commenter la réponse de cormandyr
yannOpenGL 141 Messages postés samedi 4 février 2012Date d'inscription 3 avril 2013 Dernière intervention - 3 juil. 2012 à 14:09
0
Merci
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);

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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.