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 :
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.
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); }
Première partie le listener de la souris:
Seconde partie les private class qui écoute les choix du popup menu.
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()); } } } } ); }
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.
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).
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. } } }
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![]()
Partager