Ich habe eine JList in der ich Dateien eines Ordners aufliste. Jetzt möchte ich per Mausklick einige Einträge in der JList auswählen und diese (und nur diese) in einen anderen Ordner verschieben. Ich schaffe es momentan per Buttonklick alle aufgelisteten Dateien zu verschieben. Dafür nutze ich diese Methode.
Java:
publicvoidmoveViaRename(File dateien,String zielPfad){File neu =newFile(zielPfad);File[] files = dateien.listFiles();if(files !=null){for(int i =0; i < files.length; i++){if(!files[i].isDirectory()){boolean success = files[i].renameTo(newFile(neu, files[i].getName()));if(!success){System.err.println("Fehler beim Umbennen der Datei: "+ files[i].getName());}System.out.println(files[i].getName());}}}}
Dann habe ich auch schon eine Methode mit der ich die Auswahl in der JList auf der Konsole ausgeben kann. Da sehe ich die Pfade. Hier die Methode:
Java:
publicvoidAuswahlVonListe(JList list){int[] selectedIx = list.getSelectedIndices();// Get all the selected items using the indicesfor(int i =0; i < selectedIx.length; i++){Object sel = list.getModel().getElementAt(selectedIx[i]);System.out.println(sel);}}
Und jetzt will ich wissen wie ich nur die ausgewählten Dateien Verschieben kann, und nicht alle. Könnt ihr mir helfen?
du brauchst doch nur die Schleife ab Zeile 8 mit den Indexen, mit den sich daraus ergebenen Strings/ Files/ was auch immer ausführen,
zielPfad muss natürlich irgendwo herkommen,
oder anders gesprochen:
nach Zeile 9 im unteren Code musst du an ein File-Objekt kommen, abhängig davon, was sel nun ist,
dahinter die Codezeilen von Zeile 12 oben, natürlich statt files die hier verwendete neue File-Variable usw.,
etwas denken und mitmachen muss man schon, aber erscheint doch alles ziemlich einfach?
du brauchst doch nur die Schleife ab Zeile 8 mit den Indexen, mit den sich daraus ergebenen Strings/ Files/ was auch immer ausführen,
zielPfad muss natürlich irgendwo herkommen,
oder anders gesprochen:
nach Zeile 9 im unteren Code musst du an ein File-Objekt kommen, abhängig davon, was sel nun ist,
dahinter die Codezeilen von Zeile 12 oben, natürlich statt files die hier verwendete neue File-Variable usw.,
etwas denken und mitmachen muss man schon, aber erscheint doch alles ziemlich einfach?
Ich glaub, ich habe deinen Tipp nicht verstanden. Kann auch sein, dass meine Java Kenntnisse einfach zu dürftig sind. Kannst du mir das irgendwie anders erläutern?
zielPfad = ein String (Pfad: D:/.../...)
Irgendwie suche ich sowas wie getFileAt[index] oder so... bin mir aber nicht sicher. Ich verzweifle.
wie ich zweifach angesprochen habe wäre es interessant zu wissen was 'sel' ist,
was tust du in dein JList-Model, was ist die Ausgabe, was liefert getClass()?
letzlich doch irgendwie der Pfad, also kannst du mindestens ein neues File-Objekt dort erstellen,
oder welche genauen Fehlermeldungen siehst du auf dich hereinbrechen?
Bei zweiterem musst Du aus dem String ein neues File Objekt erstellen.... new File(...
JList bietet auch die Methode getSelectedValues() damit könntest Du direkt über die Selektion iterieren ohne, dass Du zuerst die Indizes liest und über das Model iterierst.
publicvoidAuswahlVonListe(JList list){int[] selectedIx = list.getSelectedIndices();// Get all the selected items using the indicesfor(int i =0; i < selectedIx.length; i++){Object sel = list.getModel().getElementAt(selectedIx[i]);System.out.println(sel);}}
Das nur so als Info. Jetzt werde ich mir nochmal eure Antworten anschauen und versuchen zu analysieren. Solltet ihr aber noch irgendetwas für mich haben, dann immer her damit. Ich bin über alle Tipps dankbar.
auch hingekriegt, aber leider nur alle aufgelisteten Dateien und nicht die selektierten. Hätte ich kein neues Thema aufmachen dürfen? Wenn es möglich ist, dann kann das gestrige Thema gelöscht werden.
Ok. Wenn ihr mich jetzt sehen könntet... Ich steh total auf der Leitung ... ich würd´ aj gerne einen Code als Lösung für diesen Tread posten, aber ich befürchte, dass ich mit der Info File f = (File) sel; nichts anfangen kann. Ich weiss nicht wo , an welcher Stelle ich es einfügen soll usw. Ich glaube ich ein Problem die indices, for-Schleifen und Files unter einen Hut zu bekommen.
Verdammt... und ich dachte, dass ich das heute noch irgendwie hinkriege. Ich seh´ schon.... ich werde den ganzen Tag damit verbringen auf die Lösung zu kommen.
es gibt in deinem geposteten Code nur eine Stelle wo 'sel' überhaupt vorhanden ist,
an der gibst du dieses File aus, ich zeige dir wie du ein File-Objekt bekommst,
danach musst du an dieser Stelle z.B. das renameTo() ausführen,
das sind leichte Aktionen, zumindest der Überblick, wirklich in Ruhe drüber nachdenken
Ok. Wenn ihr mich jetzt sehen könntet... Ich steh total auf der Leitung ... ich würd´ aj gerne einen Code als Lösung für diesen Tread posten, aber ich befürchte, dass ich mit der Info File f = (File) sel; nichts anfangen kann. Ich weiss nicht wo , an welcher Stelle ich es einfügen soll usw. Ich glaube ich ein Problem die indices, for-Schleifen und Files unter einen Hut zu bekommen.
Verdammt... und ich dachte, dass ich das heute noch irgendwie hinkriege. Ich seh´ schon.... ich werde den ganzen Tag damit verbringen auf die Lösung zu kommen.