azerty_qwerty
Messages postés64Date d'inscriptionvendredi 23 mars 2018StatutMembreDernière intervention 6 décembre 2022
-
23 mars 2018 à 09:57
azerty_qwerty
Messages postés64Date d'inscriptionvendredi 23 mars 2018StatutMembreDernière intervention 6 décembre 2022
-
29 mars 2018 à 13:24
Bonjour,
Je charge dans une combo le nom de sous-dossiers d'un dossier avec le code ci-dessous.
Je tente de classer par ordre alphabétique les noms avec un tableau de string et "Arrays.sort". Mais cela ne fonctionne pas. Pour info, dans la JComboBox, ce qui est affiché est Nom Prénom date de naissance (ex : JAVA jadore 22.03.2018)
Merci de votre aide.
public List<String> findFoldersInDirectory(String directoryPath) { File directory = new File(directoryPath);
FileFilter directoryFileFilter = new FileFilter() { public boolean accept(File file) { return file.isDirectory(); } };
Ton tableau ne contient qu'un seul élément, ici ça ne sert à rien de trier quoi que ce soit...
Si tu veux un tri pertinent il faudrait le faire sur l'ensemble des éléments ajoutés.
Par exemple un
Collections.sort(foldersInDirectory);
à faire à la fin.
azerty_qwerty
Messages postés64Date d'inscriptionvendredi 23 mars 2018StatutMembreDernière intervention 6 décembre 2022 26 mars 2018 à 01:39
List<String> foldersInDirectory = new ArrayList<String>(directoryListAsFile.length); // liste des dossiers
effectivement
Collections.sort(foldersInDirectory);
tri bien par ordre alphabétique. Mais j'ai 2 problèmes :
1/ tous les noms sont affichés les uns à la suite des autres probablement en raison de cette déclaration
List<String> foldersInDirectory = new ArrayList<String>(directoryListAsFile.length); // liste des dossiers
2/ il y a les [ ...
3/ Meme après
Collections.sort(foldersInDirectory),
this.addItem(directoryAsFile.getName());
ne trie absolument pas par ordre alphabétique.
une idée ? Merci d'avance
KX
Messages postés16668Date d'inscriptionsamedi 31 mai 2008StatutModérateurDernière intervention17 mars 2023125
>
azerty_qwerty
Messages postés64Date d'inscriptionvendredi 23 mars 2018StatutMembreDernière intervention 6 décembre 2022 26 mars 2018 à 08:31
Il faudrait voir le code modifié que tu as actuellement, parce que je ne comprends pas ce que tu veux dire pour tes problèmes 1 et 2, quant au 3 ça aurait du être réglé...
azerty_qwerty
Messages postés64Date d'inscriptionvendredi 23 mars 2018StatutMembreDernière intervention 6 décembre 2022 26 mars 2018 à 15:14
Voici le code :
public List<String> findFoldersInDirectory(String directoryPath) {
File directory = new File(directoryPath); // chemin d'acces aux dossiers
FileFilter directoryFileFilter = new FileFilter() { public boolean accept(File file) { return file.isDirectory(); } };
List<String> foldersInDirectory = new ArrayList<String>(directoryListAsFile.length); // liste des dossiers
for (File directoryAsFile : directoryListAsFile) {
foldersInDirectory.add(directoryAsFile.getName()); //on ajoute les dossiers au fur et à mesure à la liste
}
Collections.sort(foldersInDirectory); this.addItem(foldersInDirectory); //ajout à la combobox
return foldersInDirectory;
Avec ce code, le tri est bien effectué par ordre alphabétique, mais tous les noms sont les uns derrières les autres dans la combobox et il y a des crochets. Je ne peux donc rechercher un nom en autocompletion. Exemple ci-dessous :
Par contre avec le code ci-dessous, les noms ne sont pas triés par ordre alphabétiques mais par contre l'autocomplétion est possible car il n' a pas de crochets et de plus les noms sont les uns sous les autres
public List<String> findFoldersInDirectory(String directoryPath) {
File directory = new File(directoryPath); // chemin d'acces aux dossiers
FileFilter directoryFileFilter = new FileFilter() { public boolean accept(File file) { return file.isDirectory(); } };
List<String> foldersInDirectory = new ArrayList<String>(directoryListAsFile.length); // liste des dossiers
for (File directoryAsFile : directoryListAsFile) {
foldersInDirectory.add(directoryAsFile.getName()); //on ajoute les dossiers au fur et à mesure à la liste this.addItem(directoryAsFile.getName()); //ajout à la combobox
}
// Collections.sort(foldersInDirectory); // this.addItem(foldersInDirectory); //ajout à la combobox
return foldersInDirectory;
KX
Messages postés16668Date d'inscriptionsamedi 31 mai 2008StatutModérateurDernière intervention17 mars 2023125
>
azerty_qwerty
Messages postés64Date d'inscriptionvendredi 23 mars 2018StatutMembreDernière intervention 6 décembre 2022 26 mars 2018 à 18:05
this.addItem(foldersInDirectory);
foldersInDirectory c'est la liste, tu aurais plutôt dû ajouter chacun des éléments de cette liste, plutôt que la liste elle même.
Collections.sort(foldersInDirectory);
for (File folderInDirectory: foldersInDirectory)
this.addItem(folderInDirectory);
"tous les noms sont les uns derrières les autres dans la combobox et il y a des crochets" Ça correspond à la méthode toString() de la liste
azerty_qwerty
Messages postés64Date d'inscriptionvendredi 23 mars 2018StatutMembreDernière intervention 6 décembre 2022 27 mars 2018 à 00:13
En fait cela ne fonctionne pas car j'ai une erreur mistmatch car file ne peut être converti en string
26 mars 2018 à 01:39
effectivement tri bien par ordre alphabétique. Mais j'ai 2 problèmes :
1/ tous les noms sont affichés les uns à la suite des autres probablement en raison de cette déclaration
2/ il y a les [ ...
3/ Meme après ne trie absolument pas par ordre alphabétique.
une idée ? Merci d'avance
26 mars 2018 à 08:31
26 mars 2018 à 15:14
Avec ce code, le tri est bien effectué par ordre alphabétique, mais tous les noms sont les uns derrières les autres dans la combobox et il y a des crochets. Je ne peux donc rechercher un nom en autocompletion. Exemple ci-dessous :
Par contre avec le code ci-dessous, les noms ne sont pas triés par ordre alphabétiques mais par contre l'autocomplétion est possible car il n' a pas de crochets et de plus les noms sont les uns sous les autres
26 mars 2018 à 18:05
foldersInDirectory c'est la liste, tu aurais plutôt dû ajouter chacun des éléments de cette liste, plutôt que la liste elle même.
"tous les noms sont les uns derrières les autres dans la combobox et il y a des crochets"
Ça correspond à la méthode toString() de la liste
27 mars 2018 à 00:13