Bonjour,

Mon titre n'est peut-être pas explicite alors je vais essayer d'expliquer.

J'ai fais un code qui génère des onglets avec dedans un JTextArea.
Ce code permet cette génération :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
    /**
     * Si on appuie sur le bouton créer un onglet
     * @param evt
     */
    private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {                                           
        JTextArea text = new JTextArea();
        JScrollPane scroll = new JScrollPane(text);
 
        jTabbedPane1.addTab("Nouveau rapport", scroll);
    }
Plus loin, quand je clique droit sur un des onglets générer, je fais parveni une popup qui permet (pour le moment) de fermer l'onglet et d'effacer le contenu du JTextArea. Ce code me permet de créer le menu et d'en avoir des actions. Il est décliner en deux partie.
Première partie le listener de la souris:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
/**
     * Ecouteur logiciel des évenements de la souris sur les composants
     */
    private void mouseListener() {
 
 
        //Enregistrement de l'écouteur
        jTabbedPane1.addMouseListener(
 
            //Classe écouteur
            new java.awt.event.MouseAdapter() {
 
                //Si c'est le JTabbedPane qui est à l'origine de l'appel
                @Override
 
                public void mousePressed(MouseEvent evtM) {
                //public void mouseReleased(MouseEvent evtM) {
 
                    //On regarde si c'est le clic droit
                    if(SwingUtilities.isRightMouseButton(evtM)) {
 
                        int numTab = jTabbedPane1.getSelectedIndex();
 
                        if (numTab != -1) {
 
                            JPopupMenu popMenu = new JPopupMenu();
 
                                popMenu.add(new CloseTab(numTab));
                                popMenu.addSeparator();
                                popMenu.add(new ClearInTab(numTab));
 
                                popMenu.show(evtM.getComponent(), evtM.getX(), evtM.getY());
                        }
                    }
                }
            }
        );
    }
Seconde partie les private class qui écoute les choix du popup menu.
Je ne vais parler que du cas du bouton N°2 car c'est celui qui m'intéresse. Il est donc explicitement appeler par un new dans le code au dessus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
        public void actionPerformed(ActionEvent e) {
 
            //Crée une boite de dialogue de confirmation
            int r = JOptionPane.showConfirmDialog(
                    null,
                    "Effacer le contenu de l'onglet",
                    "Que voulez-vous faire ?",
                    JOptionPane.YES_NO_OPTION,
                    JOptionPane.QUESTION_MESSAGE
            );
 
            //Traite la confirmation de la boite de dialogue
            if(r == JOptionPane.YES_OPTION) {
                System.out.println("Effacement du contenu de l'onglet " + index);
                //ici je cherche à sélectionné le JTextArea pour lequel je veux faire un clear.
            }
        }
    }
Comme on le voie sur cette dernière portion de code il me faut accéder au JTextArea mais je n'ai pas le nom vue qu'il est généré tout en haut par le premier code. En revanche je connais le nom du tab(du moins son index).

Je suppose que la méthode serais alors :
Donner la liste de composant contenu dans l'index tab X. Repérer dans la liste le JTextArea et lui appliquer la mention clear.

Comment peut-on faire ça ?

Merci pour votre aide