Bonjour,
j'ai ce code présent dans la classe ChoixRepertoire, et je souhaiterais l'exécuter depuis une autre classe, et se souvenir de la valeur de "rCourant".
Quelles modifications dois-je faire dans ce code et quel doit-être le code de la classe qui va exécuter cette dernière?
(Car je suis réellement perdu.)

Merci par avance.

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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
 
 
package jlinkapplication;
 
/* Développé par : Arnaud DOLE
 * Affichage d'un exploreur de disques afin de pouvoir sélectionner l'endroit de sauvegarde d'un fichier
 * Code réutilisable
 */
 
import java.awt.event.*;
import java.awt.*;
import java.io.*;
import java.util.Arrays;
 
 
public class ChoixRepertoire extends Frame
                                      implements ActionListener, ItemListener {
  static final String DEBTITRE="Répertoire :  ";
  static final String MARGE="  ";
 
  String repCourant;
  File fRepCourant; boolean lecteur;
  TextField tChoix;
  Button choisir,annuler;
  List lRep;
 
  public ChoixRepertoire(String r) {
    repCourant=r;
    fRepCourant = new File(r);
    lecteur = false;
    if(!fRepCourant.isDirectory()) {
        repCourant=""+File.separatorChar;
        fRepCourant=new File(""+File.separatorChar);
        }
     try  {
        Panel p = dessineFen(r);
        this.setTitle(DEBTITRE+repCourant);
        this.add(p);
        this.pack();   // this.setSize(260,340);
        this.setLocation(600,300);
        }
     catch (Exception e) { e.printStackTrace(); }
     }
 
  //1. Construction d'une fenêtre permettant le parcours d'une
  //   arborescence de répertoires.
  ////////////////////////////////////////////////////////////
  private Panel dessineFen(String r) throws Exception  {
     Font f14 = new Font("Serif",Font.BOLD,14);
 
     // En haut le nom du répertoire sélectionné
     Panel pHaut = new Panel(new FlowLayout(FlowLayout.LEFT));
     tChoix = new TextField(21);
     tChoix.setFont(f14);
     tChoix.setForeground(Color.blue);
     tChoix.setEnabled(false);
     pHaut.add(new Label("Répertoire final choisi:")); pHaut.add(tChoix);
 
     // Au centre une liste de sous-répertoires
     lRep = new List(17);
     lRep.setFont(new Font("Dialog",Font.BOLD,12));
     lRep.setBackground(Color.lightGray);
     this.initListeRep(fRepCourant);
 
     // Panneau du bas avec deux boutons côte à côte
     Panel pBas = new Panel();
     choisir = new Button("Sélectionner");
     choisir.setFont(f14);
     annuler = new Button("Annuler");
     pBas.add(choisir); pBas.add(annuler);
 
     // Titre et géomètre du panneau principal
     Panel pTout=new Panel(new BorderLayout());
     pTout.add(pHaut,BorderLayout.NORTH);
     pTout.add(lRep,BorderLayout.CENTER);
     pTout.add(pBas,BorderLayout.SOUTH);
 
     // Pour quitter par l'encadrement (gestionnaire de fenêtres)
     WindowAdapter pf = new WindowAdapter() {
        public void windowClosing(WindowEvent e) {
           quitterFen(null);
           };
        };
     this.addWindowListener(pf);
     annuler.addActionListener(this);
     choisir.addActionListener(this);
     lRep.addItemListener(this);
     lRep.addActionListener(this);
 
     return pTout;
     }
 
  /** Surveille, si nécessaire, la fermeture de la fenêtre
         (adapter suivant les besoins)
  */
  private void quitterFen(String r) {
     repCourant=r;
     System.out.println("quitterFen, choix: "+repCourant);
     System.exit(0);
     }
 
  public void actionPerformed(ActionEvent e) {
     if(e.getSource()==annuler) quitterFen(null);
     else if(e.getSource()==choisir) {
        // Quitter avec choix
        int idx = lRep.getSelectedIndex();
        if(idx<=0) return;
        String nom=lRep.getSelectedItem().substring(MARGE.length());
        if(!lecteur) {
           if(repCourant.endsWith(""+File.separatorChar))
                nom=repCourant+nom;
           else nom = repCourant+File.separatorChar+nom;
           }
        quitterFen(nom);
        }
     else if (e.getSource()==lRep) {
        // Changer de répertoire
        changeRep(lRep.getSelectedIndex());
        }
     }
 
  public void itemStateChanged(ItemEvent e) {
     int idx = lRep.getSelectedIndex();
     if(idx <= 0) changeRep(idx);
     else {
        String nom=lRep.getSelectedItem().substring(MARGE.length());
        tChoix.setText(nom);
        }
     }
 
  // Changement de répertoire:
  //    mettre à jour la liste
  //    effacer le choix précédent
  private void changeRep(int idx) {
     if(idx < 0) return;
     tChoix.setText("");
     if(idx == 0) {  // remontée
        if(fRepCourant==null) {
           lRep.deselect(0);
           return;         // on est à la racine
           }
        File f = fRepCourant.getParentFile();
        if(f == null) {
           if(lecteur) return;                // on était à la racine
           else lecteur=true;                 // remontée niveau lecteur
           }
        fRepCourant=f;
        }
     else {
        String nom=lRep.getSelectedItem().substring(MARGE.length());
        fRepCourant=new File(fRepCourant,nom);
        lecteur=false;
        }
     initListeRep(fRepCourant);
     if(lecteur) repCourant="";
     else repCourant=fRepCourant.getAbsolutePath();
     this.setTitle(DEBTITRE+repCourant);
     // System.out.println("itemStateChanged: "+repCourant);
     }
 
  public void actionPerformed1(ActionEvent e) {
     if(e.getSource()==annuler) quitterFen(null);
     else if(e.getSource()==choisir) {
        // Quitter avec choix
        int idx = lRep.getSelectedIndex();
        if(idx<=0) return;
        String nom=lRep.getSelectedItem().substring(MARGE.length());
        if(!lecteur) nom=repCourant+File.separatorChar;
        quitterFen(nom);
        }
     else if (e.getSource()==lRep) {
        // Changer de répertoire
        int idx = lRep.getSelectedIndex();
        if(idx < 0) return;
        tChoix.setText("");
        if(idx == 0) {  // remontée
           File f = fRepCourant.getParentFile();
           if(f == null) { return; } // on était à la racine
           fRepCourant=f;
           }
        else {
           String nom=lRep.getSelectedItem().substring(MARGE.length());
           fRepCourant=new File(fRepCourant,nom);
           }
        initListeRep(fRepCourant);
        repCourant=fRepCourant.getAbsolutePath();
        this.setTitle(DEBTITRE+repCourant);
        }
     }
 
  public void itemStateChanged1(ItemEvent e) {
     int idx = lRep.getSelectedIndex();
     if(idx < 0) return;
 
     tChoix.setText("");
     if(idx == 0) {  // remontée
         File f = fRepCourant.getParentFile();
         if(f == null) return;  // on était à la racine
         fRepCourant=f;
         initListeRep(fRepCourant);
         repCourant=fRepCourant.getAbsolutePath();
         this.setTitle(DEBTITRE+repCourant);
         }
     else {
        String nom=lRep.getSelectedItem().substring(MARGE.length());
        tChoix.setText(nom);
        }
     // System.out.println("itemStateChanged: "+repCourant);
     }
 
 
  // Si rep est vide, on est au niveau lectuer
  private void initListeRep(File rep) {
     String e[] = null;
     if(lecteur && rep==null) {
        // Les lecteurs
        File u[]=(new File("")).listRoots();
        if(u == null) return;
        int nu=u.length;
        if(nu == 0) return;
        e=new String[nu];
        for(int iu=0; iu<nu; iu++) e[iu]=u[iu].getAbsolutePath();
        }
     else e=lesRepertoires(rep.getAbsolutePath());
     if(e == null) e=lesRepertoires(""+File.separatorChar);
     lRep.removeAll();
     lRep.add(MARGE+"^^ [remonter d'un niveau]");
     for(int i=0; i<e.length; i++) lRep.add(MARGE+e[i]);
     }
 
  public static void main(String[] args) {
     // Répertoire courant, construction et affichage de la fenêtre
     //String rCourant=System.getProperty("user.dir");
     String rCourant= "J:\\Plans_signés";
     ChoixRepertoire fen = new ChoixRepertoire(rCourant);
     fen.setVisible(true);
 
     //2. Des utilisations d'un objet File dans la méthode main
     //////////////////////////////////////////////////////////
 
     //2.a la racine  (le père vaut 'null')
     File f = new File(""+File.separatorChar);
     System.out.println("Racine: "+f.getAbsoluteFile()+
                     "\n   parent: "+f.getParent());
     //2.b le répertoire courant et son père
     f = new File(System.getProperty("user.dir"));
     System.out.println("Rép.courant: "+f.getAbsoluteFile()+
                     "\n   parent: "+f.getParent());
     //2.b le répertoire courant, et ses sous-répertoires
     System.out.println("Rép.courant et ses sous-répertoires");
     String e[]=lesRepertoires(rCourant);
     for(int i=0; i<e.length; i++)
        if(i%5==4) System.out.println("   '"+e[i]+"'");
        else System.out.print("  '"+e[i]+"'");
     System.out.println();
 
     //2.c Les différents lecteurs (sous Windows: A:\ C:\ ...)
     int iu;
     File u[]=(new File("")).listRoots();
     System.out.println("Différents lecteurs:  ");
     for(iu=0; iu<u.length; iu++) System.out.print("  "+u[iu]);
     System.out.println();
 
     //2.d Répertoires d'un lecteur
     System.out.println("Sous-répertoire de "+u[0]);
     System.out.println("  u[0].isDirectory(): "+u[0].isDirectory());
     String ru[]=lesRepertoires(u[0]);
     for(iu=0; iu<ru.length; iu++) System.out.println("  "+ru[iu]);
 
     //2.e Un File (fu) à partir de nomL, nom d'un lecteur (exemple C:\)
     if(u.length>1) iu=0; else iu=0;
     String nomL=u[iu].getAbsolutePath();
     File fu=new File(nomL);
     File tfu[] = fu.listFiles();
     if(tfu != null) System.out.println("lecteur "+iu+": "+
                                                tfu.length+" fichers");
     else System.out.println("lecteur "+iu+" non accessible ");
     }
 
  //3. Les méthodes lesRepertoires fournissent les sous-répertoires
  /////////////////////////////////////////////////////////////////
 
  /** Les sous-répertoires de fRep.
   *  Si fRep n'est pas un sous-répertoire, renvoie null
   *  sinon le tableau renvoyé contient les sous-répertoires
   */
  static public String[] lesRepertoires(File fRep) {
     if(fRep==null) return null;
     File entrees[]=fRep.listFiles();
     if(entrees==null) return new String[0];
     int i,nr=0;
     for(i=0; i<entrees.length; i++) if(entrees[i].isDirectory()) nr++;
     String lesRep[] = new String[nr];
     for(i=0, nr=0; i<entrees.length; i++)
         if(entrees[i].isDirectory()){
             lesRep[nr]=entrees[i].getName();nr++;
             }
     Arrays.sort(lesRep,0,lesRep.length);
     return lesRep;
     }
 
  /** Les sous-répertoires de nomRep.
   *  Si unRep n'est pas un sous-répertoire, renvoie null
   *  sinon le tableau renvoyé contient les sous-répertoires
   */
  static public String[] lesRepertoires(String nomRep) {
     return lesRepertoires(new File(nomRep));
     }
 
 
   public static void main() {
       new ChoixRepertoire("toto");
       }
 
  }