Avatar billede jesperbaldur Nybegynder
03. oktober 2003 - 11:58 Der er 8 kommentarer og
2 løsninger

Vælge en mappe på et drev (jfilechooser)

Hvordan kan man vælge en mappe?
Formålet er at brugeren skal kunne vælge hvilken mappe på c-drevet som nogle filer skal kopieres ned i. Jeg har forsøgt med JFileChooser men uden held, da jeg kun kan finde ud af at vælge filer. Finder der en lign klasse til mapper?
Avatar billede jesperbaldur Nybegynder
03. oktober 2003 - 12:00 #1
Finder = findes
Avatar billede riversen Nybegynder
03. oktober 2003 - 12:01 #2
prøv med

setFileSelectionMode(int mode)
          Sets the JFileChooser to allow the user to just select files, just select directories, or select both files and directories.
Avatar billede riversen Nybegynder
03. oktober 2003 - 12:02 #3
setFileSelectionMode
public void setFileSelectionMode(int mode)Sets the JFileChooser to allow the user to just select files, just select directories, or select both files and directories. The default is JFilesChooser.FILES_ONLY.

Parameters:
mode - the type of files to be displayed:
JFileChooser.FILES_ONLY
JFileChooser.DIRECTORIES_ONLY
JFileChooser.FILES_AND_DIRECTORIES
Throws:
IllegalArgumentException - if mode is an illegal Dialog mode
See Also:
getFileSelectionMode()
Avatar billede magoo20000 Nybegynder
03. oktober 2003 - 12:24 #4
Noget a la det her kan gøre det: http://www.rgagnon.com/javadetails/java-0370.html
Avatar billede jesperbaldur Nybegynder
03. oktober 2003 - 12:41 #5
Det virker næsten.. Sider dog og roder med et lille problem. Den mappe som jeg vælger var JFileChooser vil jeg gerne have sat som teksten i et JTextField. Men hvordan får jeg det?
har forsøgt med getSelectedFile() men den brokker sig over at det ikke er en string. Hvordan gør jeg så?
Avatar billede magoo20000 Nybegynder
03. oktober 2003 - 13:43 #6
Det, som getSelectedFile returnerer er en File. Den har en getName metoder, der burde give dig det navn, som filen/biblioteket har i filstrukturen.
Avatar billede magoo20000 Nybegynder
03. oktober 2003 - 13:47 #7
Fra APIet:
getName() Returns the name of the file or directory denoted by this abstract pathname.

Burde virke på dit File objekt.
Avatar billede jesperbaldur Nybegynder
03. oktober 2003 - 21:41 #8
den returnerer ikke stien til den mappe som jeg har valgt.
Avatar billede magoo20000 Nybegynder
03. oktober 2003 - 21:51 #9
Nej, en den kan du få vha. getAbslutePath().

Her har jeg lavet et lille eksempel, der leger lidt med søgning og navne.

import java.io.*;

public class FileFinder {

    boolean done = false;

    private void scanDir(File path, String find) {
        if (done) return;
        File[] filer = path.listFiles();

        for (int i = 0; i < filer.length; i++) {
            if (filer[i].isFile() && filer[i].getName().equalsIgnoreCase(find)) {
                System.out.println("Filen '" + find + "' fundet i '" + filer[i].getAbsolutePath()); //Her sker det

                if (filer[i].isFile()) {
                    System.out.println("Fil: " + filer[i].getName());
                }
                if (filer[i].isDirectory()) {
                    System.out.println("Dir: " + filer[i].getName());
                }
                done = true;
                return;
            }
            if (filer[i].isDirectory()) {
                scanDir(filer[i], find);
            }
        }
    }
    public FileFinder() {
        File f = new File("c:\\");
        scanDir(f, "arcsetup.exe");
    }
    public static void main(String[] args) {
        new FileFinder();
    }
}
Avatar billede jesperbaldur Nybegynder
04. oktober 2003 - 08:57 #10
sorry... Det va mig der havde lavet en fejl med .getName. Det virker nu
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester