JList qui contient la liste des Fichiers dans un répertoire
J'ai créé un JList
qui contient une liste de fichiers dans un répertoire.
Voici la JList
.
JList MList;
String ListData[]
//Create a new listbox control
List = new JList(ListData);
J'ai aussi créé une méthode qui lit une liste de fichiers texte dans un répertoire:
public String ReadDirectory() {
String path = "C://Documents and Settings/myfileTxt";
String files = null;
File folder = new File(path);
File[] listOfFiles = folder.listFiles();
for (int i = 0; i < listOfFiles.length; i++) {
if (listOfFiles[i].isFile()) {
files = listOfFiles[i].getName();
if (files.endsWith(".txt") || files.endsWith(".TXT")) {
System.out.println(files);
}
}
}
return files;
}
Le problème c'est que je veux le résultat de cette méthode (la liste des fichiers de texte) dans un JList
.
Comment puis-je mettre le File
objets dans le JList
?
ce qui est
s'il vous plaît apprendre conventions de nommage java et de s'y tenir
le package de votre problème en petits morceaux et de les résoudre l'un après l'autre. Conseil: la méthode ne pas de retour d'un liste (ni de fichiers ni de noms de fichiers)
String path = "C://Documents and Settings/myfileTxt";
, qui n'est pas C:/Documents and Settings/myfileTxt
, not too C:\\Documents and Settings\\myfileTxt
s'il vous plaît apprendre conventions de nommage java et de s'y tenir
le package de votre problème en petits morceaux et de les résoudre l'un après l'autre. Conseil: la méthode ne pas de retour d'un liste (ni de fichiers ni de noms de fichiers)
OriginalL'auteur Lou | 2011-08-28
Vous devez vous connecter pour publier un commentaire.
Ne pas mettre les chaînes dans le
JList
, utilisezFile
objets et définir un moteur de rendu. Depuis la pièce retournée par le moteur de rendu par défaut est unJLabel
, il est facile de mettre une icône.setText(f.getName());
merci, JLabel retourne moteur de Rendu par défaut +1hmm que ce soit, sans
l.
🙂veuillez voir mon post 🙂
coupant les cheveux en quatre: vous ne créez pas de la frontière à chaque appel 🙂
Thompson psssst et maintenant elle est là, comme sans le café préféré après ce matin 🙂
OriginalL'auteur Andrew Thompson
@Andrew Thompson
eeeergght rien de bon à venir à partir de cette nuit 03:36AM dans mon Fuseau horaire et à 06:00 je dois réveil,
mais quelque part, j'ai perdu (pas moi) JLabel, cieux où il pourrait être
BTW - Le 1er code est plus "compact" à l'écran. (un instant plus tard) je comprends pourquoi maintenant. Au lieu de
setPreferredSize(new Dimension(250, 25));
dans le deuxième code, comment sursetBorder(new EmptyBorder(2,2,2,2));
? (réglage du nombre de préférence)-1 pour setXXSize
que vraiment impossible (alors que j'ai accepté votre droit de vote) si vous voulez tenir la vue pour JList avec les orientations horizontales, pour un autre (que je sache) les définitions de JList, ce *** de toujours swithing à la verticale ****, aucune idée de comment le résoudre, sans salir hack
veuillez voir ma mise à jour, mais je ne peux pas remplacer PreferredScrollableViewportSize correctement(seulement si j'ai mis là setFixedCellXxx), parce que n'est pas mis en oeuvre pour JList, aussi j'ai essayé setPrototypeCellValue pour JList, mais ne retourne corriger Dimnesion trop
OriginalL'auteur mKorbel
Je ne comprends pas très bien ce que vous faites - il semble que vous souhaitez filtrer le contenu de la JList être uniquement les fichiers avec les
.txt
extension. Dans ce cas, vous êtes probablement à la recherche à mettre en œuvre unFilenameFilter
qui va provoquerlist()
pour retourner une liste de noms de fichiers dans unString[]
que seuls matchs de ce que vous avez spécifié.Par exemple,
File
objets, je vous conseille d'utiliser unFileFilter
au lieu d'unFilenameFilter
. Voir ma réponse par un exemple. Sinon, +1 pour ne pas essayer d'obtenir une liste de tous les fichiers, puis de la filtrer dans une liste extensible ( comme la question & 1er 2 réponses ;).Ah, je vois, je n'étais pas au courant, merci! Et un +1 pour vous, pour la SSCCE 🙂
En fait, vous avez besoin d'utiliser
public class TextFileFilter implements FilenameFilter
au lieu depublic class TextFileFilter extends FilenameFilter
OriginalL'auteur no.good.at.coding
Créer une liste de chaînes de
List<String> fnames = new ArrayList<String>();
, le remplir avec les noms de fichiers (fnames.add(files);
), puis le mettre à JList à l'aide delist.setListData(fnames.toArray());
. Je suppose que cela devrait fonctionner.OriginalL'auteur nidu
Il suffit de modifier votre code comme celui-ci,
Qui vous permettra de revenir objet ArrayList et ensuite, vous pouvez convertir que ArrayList objet d'un tableau normal.
Quelque chose comme ça, disons que votre nom de variable est,
Viens de le faire pour le convertir en tableau normal
List<String>
.OriginalL'auteur TeaCupApp