Ajout JPanel dans JTabbedPane

Résolu
Messages postés
98
Date d'inscription
jeudi 8 février 2007
Statut
Membre
Dernière intervention
11 janvier 2010
-
Messages postés
4
Date d'inscription
jeudi 22 mai 2008
Statut
Membre
Dernière intervention
12 septembre 2009
-
Bonjour, pour mes projets je souhaite créer une sorte de paint en java et la possibilité d'avoir plusieurs onglet separés.
J'arrive à créer les onglets mais je voudrais pouvoir traiter différement ces onglets comme la couleur de fond ect...
Voici mon code pour créer les onglets:
private JMenuItem getNewOnglet() {
        if (NewOnglet == null) {
            NewOnglet = new JMenuItem();
            NewOnglet.setText("Nouvel onglet");
            NewOnglet.setToolTipText("Ajouter un onglet");
            NewOnglet.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E,
                    KeyEvent.CTRL_DOWN_MASK));
            NewOnglet.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent e) {
                    nbOnglet = nbOnglet + 1;
                    if (nbOnglet >= 10) {
                        JOptionPane.showMessageDialog(null,
                                "Vous ne pouvez dépasser 10 onglets!",
                                "Erreur", JOptionPane.WARNING_MESSAGE);
                    } else {
                        TabbedPane.insertTab("Panneau" + nbOnglet, null, null,
                                "Onglet", nbOnglet);
                        System.out.println("Nombre onglet: " + nbOnglet);
                    }

                }
            });
        }
        return NewOnglet;
    }
et voici pour modifier la couleur de fond:
private JButton getBtnMulti() {
        if (btnMulti == null) {
            btnMulti = new JButton();
            btnMulti.setIcon(new ImageIcon("images/multi.png"));
            btnMulti.setToolTipText("Choix de la couleur");
            btnMulti.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent e) {
                    System.out.println("####### Choix couleur #######");
                    Color coul = JColorChooser.showDialog(null,
                            "Couleur de fond", Color.WHITE);
                    System.out.println("Choix de la couleur " + coul);
                    Panel1.setBackground(coul);

                }
            });
        }
        return btnMulti;
    }
Merci par avance

32 réponses

Messages postés
98
Date d'inscription
jeudi 8 février 2007
Statut
Membre
Dernière intervention
11 janvier 2010

Oui c'est super déjà ça réssoud ce problème....
Messages postés
98
Date d'inscription
jeudi 8 février 2007
Statut
Membre
Dernière intervention
11 janvier 2010

Mais maintenant je voudrais traiter ces panel indépendement ... je sais je suis vraiment pas doué....
Messages postés
98
Date d'inscription
jeudi 8 février 2007
Statut
Membre
Dernière intervention
11 janvier 2010

je pense qu'il faudrait que je récupère l'index de l'onglet selectionné non? mais comment le traiter après?
Messages postés
98
Date d'inscription
jeudi 8 février 2007
Statut
Membre
Dernière intervention
11 janvier 2010

C'est bon j'ai trouvé! en fait c'est vraiment tout bête....
Si quelqu'un cherche un jour à faire cela en fait il suffit de faire :
private JButton getBtnMulti() {
        if (btnMulti == null) {
            btnMulti = new JButton();
            btnMulti.setIcon(new ImageIcon("images/multi.png"));
            btnMulti.setToolTipText("Choix de la couleur");
            btnMulti.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent e) {
                    System.out.println("####### Choix couleur #######");
                    Color coul = JColorChooser.showDialog(null,
                            "Couleur de fond", Color.WHITE);
                    getPanneau().setBackground(coul);
                    System.out.println("Choix de la couleur " + coul);

                    ConteneurOnglet.getSelectedComponent().setBackground(coul);
                }
            });
        }
        return btnMulti;
    }
Pour changer la couleur et ainsi pour fermer un onglet en double cliquant dessus:

private JTabbedPane getConteneurOnglet() {
        if (ConteneurOnglet == null) {
            ConteneurOnglet = new JTabbedPane();
            ConteneurOnglet.addTab("Panneau", getPanneau());
            ConteneurOnglet.addMouseListener(new java.awt.event.MouseAdapter() {
                public void mouseClicked(java.awt.event.MouseEvent e) {
                    if (e.getClickCount() == 2) {
                        ConteneurOnglet.remove(ConteneurOnglet
                                .getSelectedIndex());
                    }
                }
            });
        }
        return ConteneurOnglet;
    }

Merci encore de ta précieuse aide!!j'ai compris plein de truc finalement!
Messages postés
98
Date d'inscription
jeudi 8 février 2007
Statut
Membre
Dernière intervention
11 janvier 2010

On ne peut pas éditer mais il faut enlever la ligne
"getPanneau().setBackground(coul);"
Messages postés
744
Date d'inscription
dimanche 1 avril 2007
Statut
Membre
Dernière intervention
9 mai 2010
8
Salut,

Non mais la seule chose à faire c'est créer un nouveau panel à chaque fois que tu rajoutes un tabbedPane.

Donc maintenant à toi de voir... Est ce qu'il serait pas intéressant de créer une classe extends de JPanel qui contiendrait tous les composants graphiques que tu as besoin dans ce JPanel?

Par exemple dans tes JPanel, tu as besoin d'un JLabel, d'un JTextArea et d'un JButton... ben tu crées une classe extends de JPanel avec ces composants à l'intérieur et puis lorsque tu rajoutes ton JTabbedPane ça donnerait ça :

TaNouvelleClasse test = new TaNouvelleClasse();
getTabbedPane().addTab("Panneau" + nbOnglet, test);

<hr width="100%" size="2" />
 C'est après des heures de codage que j'ai compris pourquoi les créateurs de Java ont choisi une tasse de café comme logo...
Messages postés
744
Date d'inscription
dimanche 1 avril 2007
Statut
Membre
Dernière intervention
9 mai 2010
8
Salut,

Et pour ton futur, essais d'éviter d'appeler des variables avec une majuscule en début, c'est plutot réservé aux classs ça, hein?

Allé bonne continuation

<hr width="100%" size="2" />
 C'est après des heures de codage que j'ai compris pourquoi les créateurs de Java ont choisi une tasse de café comme logo...
Messages postés
98
Date d'inscription
jeudi 8 février 2007
Statut
Membre
Dernière intervention
11 janvier 2010

ok merci beaucoup,
et c'est ce que je pensais faire pour la zone de dessin, créer une classe dérivée de JPanel et contenant les composants graphique selon la selection des boutons avec getters/setters....
Je reviendrai surement te demander un coup de main...
Merci pour ta précieuse aide et je vais remédier aux noms de mes variables....
Messages postés
744
Date d'inscription
dimanche 1 avril 2007
Statut
Membre
Dernière intervention
9 mai 2010
8
Salut,

Tiens je vais te dégouter un cou... J'ai déjà fais un Paint en Java avec un Design Pattern "Decorateur" en plus!!!

Il était niquel : changement de la couleur de fond, changement de la couleurs des traits (chaque trait avec SA couleur), différentes formes possibles (carré, rond, trait) avec différent style (plein ou vide pour les carrés et les ronds)

 Comme quoi c'est faisable, donc go!!!

<hr width="100%" size="2" />
 C'est après des heures de codage que j'ai compris pourquoi les créateurs de Java ont choisi une tasse de café comme logo...
Messages postés
98
Date d'inscription
jeudi 8 février 2007
Statut
Membre
Dernière intervention
11 janvier 2010

lol ben merci!!
je vais pouvoir continuer à t'embêter alors ^^
mais tu pourrais me passer les sources pour jeter un coup d'oeil ou pas?
notament dans le cas pour tracer les lignes ect...
Messages postés
744
Date d'inscription
dimanche 1 avril 2007
Statut
Membre
Dernière intervention
9 mai 2010
8
Salut,

Je verrai ça chez moi, voir si j'ai encore les sources... Ca serait bête que je les ai plus mais normalement c'est bon. A voir. Mais si je les retrouve, je les proposerai surement sur le forum là

Bonne continuation

<hr width="100%" size="2" />
 C'est après des heures de codage que j'ai compris pourquoi les créateurs de Java ont choisi une tasse de café comme logo...
Messages postés
4
Date d'inscription
jeudi 22 mai 2008
Statut
Membre
Dernière intervention
12 septembre 2009

Bonjour
SVP je voudrais ajouter plusieurs JPanel qui se trouvent dans differentes classes dans un JTabbedPane qui se trouve dans une classe a part!
j'arrive a créer les onglets mais je veux leur affecter les JPanel qui se trouvent dans les autres classes que j'ai crée!
aidez moi svp je suis bloqué !
j'ai regardé vos méthodes mais jy arrive pas!
merci d'avance pour la réponse!
a+