Ole Ildsgaard Hougaard <oih@get2net.dk> skrev i en
nyhedsmeddelelse:82p8ruojf9gegtic8tsoobg6vber271na0@4ax.com...
> "tmw" <tmw@get2net.dk> wrote:
>
> >hejsa
> >jeg er ret ny i Java
> >Er der nogle her inde der ved hvordan man læser et bibliotek af filer ind
i
> >et JAreaTextField
> >jeg har lavet dette indtilvidere, men kan ikke få den til at indlæse det
>
> Du har nogle problemer med at få kaldt dine metoder i
> Oversigt-klassen. Der er generelt to måder at kalde metoder i Java:
> 1) At kalde en almindelig (d.v.s. dynamisk) metode på et objekt.
> 2) At kalde en statisk metode på en klasse.
> Din "dir"-metode vil du gerne kalde med Oversigt.dir(), men så kræver
> det at dir() er statisk, altså:
>
> public static String dir() {
> String e = "c:";
> return e;
> }
>
> Din anden "metode", Oversigt, er i virkeligheden en konstruktor. En
> konstruktor "kalder" man ved at konstruere et objekt af klassen.
> F.eks.:
>
> Oversigt filer = new Oversigt("c:\");
>
> Det er udtrykket 'new Oversigt("c:\")' der sørger for at koden i
> Oversigt(String r) bliver kørt. Det vil resultere i at indholdet af
> roden på c-drevet bliver skrevet ud på konsollen. Det er bare ikke det
> du ønsker, så du skal ikke bruge System.out.println().
>
> Inden vi blander JTextArea ind i det, vil jeg gerne lave en ændring i
> din kode. Jeg synes ikke det er hensigtsmæssigt at du bruger en
> konstruktor til at lave en ændring i de omkringliggende variabler. En
> konstruktor er til at sætte de instansvariabler, der hører til
> klassen, til en fornuftig startværdi. I stedet burde du bruge en
> statisk metode:
>
> public static void outputFiles(String r) {
> File f = new File(r);
> file://osv.
> }
>
> Nu mangler du bare at sætte dine værdier ind i et JTextArea i stedet
> for ud på konsollen. Til det formål får du brug for at give
> outputFiles() det text area, du vil outputte til. Din oversigt-klasse
> kunne f.eks. se således ud:
>
> file://imports ignoreret.
> public class Oversigt {
> public static void outputFiles(JTextArea textArea, String r) {
> File f = new File(r);
> File fileList[] = f.listFiles();
> for (int i = 0; i < fileList.length; i++) {
> textArea.append(fileList[i].getName());
> textArea.append("\r\n");
> file://Linieskift. Det gør println() automatisk, men append()
> file://gør ikke.
> file://Strengt taget burde man bruge
> file://System.getProperty("line.separator") i stedet for "\r\n"
> file://for at gøre det platform-uafhængigt.
> }
> }
>
> public static String dir() {
> String e = "C:\";
> return e;
> }
> }
>
> Du kan nu vise kalde klassen sådan her:
>
> JTextArea text = new JTextArea();
> file://Husk at skabe et JTextArea objekt.
> Oversigt.outputFile(text, Oversigt.dir());
>
>
> >hilsen Tw
>
> Jeg er notorisk ude af stand til at give et kort svar på de her
> spørgsmål, men jeg håber det hjalp alligevel.
>
> hilsen Ole
>
> PS. Hvis du meget gerne vil have en konstruktor med i din
> Oversigt-klasse, så kunne du gøre noget i den her stil:
>
> public class Oversigt {
> File[] fileList;
>
> Oversigt(String r) {
> File f = new File(r);
> fileList = f.listFiles();
> }
>
> public static void outputFiles(JTextArea textArea) {
> for (int i = 0; i < fileList.length; i++) {
> textArea.append(fileList[i].getName());
> textArea.append("\r\n");
> }
> }
>
> public static String dir() {
> String e = "C:\";
> return e;
> }
> }
>
> Som så kaldes på denne måde:
> Oversigt filer = new Oversigt(Oversigt.dir());
> JTextArea text = new JTextArea();
> filer.outputFiles(text);
> --
> Ole I. Hougaard
> oih@get2net.dk
kanont
Det takker jeg mange gange for ole, det hjalp virkelig...
mvh
torben w