2Danke
ERLEDIGT
JA
JA
ANTWORTEN
7
7
ZUGRIFFE
168
168
EMPFEHLEN
-
Hallo,
ich habe (mal wieder) ein kleines Problem. Ich versuche aus einem Unterordner die Namen von .xml-Dateien in ein Array zu packen und diese dann in einem Dropdown-Menü (bzw. ein JComboBox) ausgeben zu lassen.
Das eigentliche Problem: In diesem besagten Unterordner liegen schon zwei Dateien diesen Typs, aber Java findet sie nicht. Das Merkwürdige ist, dass das fast identische Prozedere mit .csv-Dateien funktioniert...
Hier mal der Quellcode für die .xml-Dateien:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
public void createLoadFrame(Container pane){ // Erstellt eine neuen NewFrame pane.setLayout(null); // Die Buttons okay = new JButton("Okay"); cancel = new JButton("Abbruch"); pane.add(okay); pane.add(cancel); Insets insets = pane.getInsets(); Dimension size = okay.getPreferredSize(); okay.setBounds(75 + insets.left, 125 + insets.top, size.width, size.height); okay.addActionListener(this); okay.setActionCommand("loadkay"); size = cancel.getPreferredSize(); cancel.setBounds(150 + insets.left, 125 + insets.top, size.width, size.height); cancel.addActionListener(this); cancel.setActionCommand("can"); // Dropdown für Quelldateien File userdir = new File("./XML"); ArrayList<String> files = new ArrayList<String>(); for (String entry : userdir.list(new TxtFilenameFilter())) { files.add(entry); } System.out.println("Anzahl der gefundenen Dateien " + files.size()); int fSize = files.size(); String[] fileArray = new String[fSize]; for(int i = 0; i < fSize; i++) { fileArray[i] = files.get(i); System.out.println(i + ": " + fileArray[i]); } comboVar = fileArray[0]; listXML = new JComboBox(fileArray); pane.add(listXML); listXML.setSelectedIndex(0); size = listXML.getPreferredSize(); listXML.setBounds(25 + insets.left, 25 + insets.top, size.width, size.height); listXML.addActionListener(this); listXML.setActionCommand("combo"); System.out.println("Creating loading frame... done!"); }
Es handelt sich hierbei um eine ArrayIndexOutOfBoundsException. Zum vergleich mal der funktionierende Code für .csv-Dateien:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
public void createNewFrame(Container pane){ // Erstellt eine neuen NewFrame pane.setLayout(null); // Die Buttons okay = new JButton("Okay"); cancel = new JButton("Abbruch"); pane.add(okay); pane.add(cancel); Insets insets = pane.getInsets(); Dimension size = okay.getPreferredSize(); okay.setBounds(75 + insets.left, 125 + insets.top, size.width, size.height); okay.addActionListener(this); okay.setActionCommand("newkay"); size = cancel.getPreferredSize(); cancel.setBounds(150 + insets.left, 125 + insets.top, size.width, size.height); cancel.addActionListener(this); cancel.setActionCommand("can"); // Dropdown für Quelldateien File userdir = new File("./CSV"); ArrayList<String> files = new ArrayList<String>(); for (String entry : userdir.list(new TxtFilenameFilter())) { files.add(entry); } System.out.println(files.size()); int fSize = files.size(); String[] fileArray = new String[fSize]; for(int i = 0; i < fSize; i++) { fileArray[i] = files.get(i); System.out.println(i + ": " + fileArray[i]); } comboVar = fileArray[0]; listFiles = new JComboBox(fileArray); pane.add(listFiles); listFiles.setSelectedIndex(0); size = listFiles.getPreferredSize(); listFiles.setBounds(25 + insets.left, 25 + insets.top, size.width, size.height); listFiles.addActionListener(this); listFiles.setActionCommand("combo"); // Feld für Dateinamen der Zieldatei eingeben input = new JTextField(2); pane.add(input); input.setBounds(25 + insets.left, 75 + insets.top, 100, 25); System.out.println("Creating new frame... done!"); }
Ich wär über jede Hilfe sehr froh
Gruß Devilness
-
26.07.11 14:28 #2
Hi,
könnte es sein, dass dein TxtFilenameFilter die xml-Dateien rausfiltert?Denken gefärdet die Gewohnheit
-
26.07.11 14:39 #3
Ich glaube kaum, dass ein TxtFileNameFilter xml-Dateien findet, eigentlich schon merkwürdig, dass er angeblich csv-Dateien findet, denn laut Spezifikation lässt er wirklich nur txt-Dateien zu... Ich schätze der Fehler tritt hier auf: comboVar = fileArray[0], ohne gefundenen Wert gibt es nicht mal diesen Eintrag.
Aber davon mal abgesehen, habe ich das Gefühl, du läufst auf dem Weg auf die andere Straßenseite noch 3x um den Block. Nur mal zum Verständnis... Du holst dir ein String-Array der gefundenen Dateien, schreibst diese Eintrag für Eintrag in eine ArrayList, um diese dann Eintrag für Eintrag wieder in ein String-Array zu schreiben, welche die ComboBox schließlich als Argument bekommt. Also warum zur Hölle schreibst du nicht:
Für deine comboVar (wofür die auch immer stehen mag) kannst du dann immernoch schreiben:Code java:1
listFiles = new JComboBox(userdir.list(new TxtFilenameFilter())); //hab den Filter einfach mal stur übernommen
Code java:1 2
if(listFiles.getItemCount() > 0) comboVar = (String)listFiles.getItemAt(0); else //falls Liste keine Einträge enthält...
Jeder Fehler, aus dem wir lernen, ist ein Erfolg...
...Aber mach' nicht den Fehler, nicht aus deinen Fehlern zu lernen.
-
26.07.11 15:40 #4
Ja, gehört auch nicht zum standard java. Im Netz geistern aber viele Implementationen rum wie
Entweder die csv-Dateien liegen mit der Endung txt vor oder die Implementierung wurde kurzerhand auf .csv umgebogen.Code java:1 2 3 4 5 6
public class TxtFilenameFilter implements FilenameFilter { @Override public boolean accept( File f, String s ) { return new File(f, s).isFile() && s.toLowerCase().endsWith( ".txt" ); } }
Denken gefärdet die Gewohnheit
-
26.07.11 15:52 #5
Öhm ja das würde es natürlich erklären
Aber damit hätten wir ja gleich ein Beispiel, wie sich Devilness selbst einen Filter bauen könnte...
Jeder Fehler, aus dem wir lernen, ist ein Erfolg...
...Aber mach' nicht den Fehler, nicht aus deinen Fehlern zu lernen.
-
Hallo und danke, dass ihr so schnell darauf geantwortet habt. Ich hab den Wald vor lauter Bäumen nicht gesehen -.- Natürlich liegts am txtFileFilter, so einen hab ich nämlich schon, aber halt für .csv-Dateien. Ich hab nämlich genau das, was Franz gepostet, hat selbst schon gefunden. Und eben an diesem Filter wirds gelegen haben. Ich werd das gleich mal korrigieren bzw neu schreiben. Und danke HonniCilest für die Tipps, ich werd das mal übernehmen
-
26.07.11 16:33 #7
Mal noch am Rande erwähnt, was genau hast du vor? Lediglich einen Dialog zum Öffnen von Dateien?
Wenn ja, dann schau doch auch ma hier:
http://download.oracle.com/javase/1....leChooser.htmlJeder Fehler, aus dem wir lernen, ist ein Erfolg...
...Aber mach' nicht den Fehler, nicht aus deinen Fehlern zu lernen.
-
Ich möchte keinen Dialog. Ich will, dass nur Dateien eines bestimmten Datentyps, also z.B. .xml, in einem Dropdown-Menü erscheinen, wovon man sich eine Datei aussuchen soll. Der JFileChooser ist zwar ganz interessant, aber für meine Zwecke weniger geeignet, da er die Sache etwas verkomplizieren würde. Trotzdem Danke
Ähnliche Themen
-
Treiber werden nicht gefunden
Von Peter Klein im Forum Microsoft WindowsAntworten: 4Letzter Beitrag: 29.01.09, 15:00 -
Die Webseite kann nicht gefunden werden
Von Meier22 im Forum Internet, DSL & FlatrateAntworten: 14Letzter Beitrag: 14.09.08, 00:26 -
[Win98] Dateien für Treiber werden nicht gefunden
Von Hellie im Forum HardwareAntworten: 0Letzter Beitrag: 12.03.05, 11:51 -
Kann JAVA Programm nicht complieren-javac konnte nicht gefunden werden!
Von chell im Forum JavaAntworten: 1Letzter Beitrag: 07.11.04, 17:35 -
Netzwerke werden nicht gefunden
Von fdelay im Forum NetzwerkeAntworten: 2Letzter Beitrag: 30.12.03, 10:18





Zitieren
Login





