/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
insættelse af file liste i et JAreaTextFie~
Fra : tmw


Dato : 20-10-02 18:55

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

import java.io.*;

public class Oversigt
{ public Oversigt(String r) throws Exception
{
File f = new File(r);
File fileList[] = f.listFiles();
for (int i = 0; i < fileList.length; i++)
{
System.out.println(fileList[i].getName());
}
}
public String dir()
{
String e = "c:";
return e;
}
}

---------------------
JTextArea text;
text.getText(Oversigt.dir());


hilsen Tw



 
 
Ole Ildsgaard Hougaa~ (21-10-2002)
Kommentar
Fra : Ole Ildsgaard Hougaa~


Dato : 21-10-02 21:36

"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);
//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:

//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");
//Linieskift. Det gør println() automatisk, men append()
//gør ikke.
//Strengt taget burde man bruge
//System.getProperty("line.separator") i stedet for "\r\n"
//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();
//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

tmw (21-10-2002)
Kommentar
Fra : tmw


Dato : 21-10-02 23:34


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



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408907
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste