S
Sasku
Gast
Hey Leute,
ich habe in meinem Programm einen FileChooser eingebaut. Und jetzt will ich eine Unterscheidung zw. Ordnern und einzelnen Files schaffen. Gut hinbekommen.
jetzt ist mein Problem, wenn ich den Ordner ausgelesen habe und dann will ich die einzelnen Dateien in eine List schreiben. Dafür gebe ich Sie wieder zurück an eine andere Methode. Mein Problem ist allerdings, dass ich ja verschiedene Rückgabewerte haben kann. Also bei einem Ordner ein Array, wobei ich die einzelnen Files ja übergebe (bzw. den Pfad als String ) .. oder ein einzelnes File.
Wenn ich in meinem Programm einen Ordner auswähle nimmt es allerdings nur Das erste File welches im Ordner ist.
Wie kann ich also meine Rückgabewerte dynamisch machen ... ?
das hier ist der Code .. einmal der Teil in dem mein FileChooser aufgerufen wird und dann das selektierte File in die Liste geschrieben wird. Und einmal der FileChooser welcher entweder den Ordner ( also die darin enthaltenen Dateien ) oder ein einzelnes File übergeben soll.
Hoffe das mein Problem halbwegs verständlich ist :/
Danke schon mal
ich habe in meinem Programm einen FileChooser eingebaut. Und jetzt will ich eine Unterscheidung zw. Ordnern und einzelnen Files schaffen. Gut hinbekommen.
jetzt ist mein Problem, wenn ich den Ordner ausgelesen habe und dann will ich die einzelnen Dateien in eine List schreiben. Dafür gebe ich Sie wieder zurück an eine andere Methode. Mein Problem ist allerdings, dass ich ja verschiedene Rückgabewerte haben kann. Also bei einem Ordner ein Array, wobei ich die einzelnen Files ja übergebe (bzw. den Pfad als String ) .. oder ein einzelnes File.
Wenn ich in meinem Programm einen Ordner auswähle nimmt es allerdings nur Das erste File welches im Ordner ist.
Wie kann ich also meine Rückgabewerte dynamisch machen ... ?
Code:
if(obj.equals(oFlaeche.add_b)){
b=false;
String s = pfadAuswahl2();
oFlaeche.model.addElement(s);
if ( oFlaeche.model.size() >= 18 ) {
oFlaeche.scrollPanel.setPreferredSize(new Dimension(420, oFlaeche.scrollPanel.getHeight()+ 20));
oFlaeche.scrollPanel.setMinimumSize(new Dimension(420, oFlaeche.scrollPanel.getHeight()+20));
oFlaeche.list.setBounds(0, 0, 420, oFlaeche.list.getHeight()+20);
try {
Thread.sleep(500);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
}
for(int i = 0; i< oFlaeche.model.getSize(); i++){
String tmp = oFlaeche.model.getElementAt(i).toString();
for(int j = 0; j<oFlaeche.model.getSize(); j++){
if(tmp.equals(oFlaeche.model.getElementAt(j).toString())){
if(j!=i){
JOptionPane.showMessageDialog(null, "Sie haben zwei identische Dateien ausgewählt.", "FEHLER", JOptionPane.WARNING_MESSAGE);
oFlaeche.model.removeElementAt(j);
}
}
}
}
}
}
Code:
public String pfadAuswahl2(){
JFileChooser fileChooser = new JFileChooser(); // erzeugt ein JFileChooser Objekt
fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); // setzt den selektionsmodus auf Dateien und Ordner
int result = fileChooser.showOpenDialog(fileChooser); // setzt eine int variable wenn der OK-Button gedrückt wurde im FileChooser
if (result == JFileChooser.APPROVE_OPTION) { // überprüft ob "ok" gedrückt worden ist,denn Aprove Option ( s. zeile drunter )
// gibt einen Wert zurück der gleich dem wert ist der result ist.
File selectedFile = fileChooser.getSelectedFile(); // nimmt das aktuelle File
if ( selectedFile.isDirectory()) { // wird ausgeführt, falls ausgewählte Datei ein Ordner ( Directory ) ist.
File[] filesInDir = selectedFile.listFiles();
if ( filesInDir != null ) {
for ( int i = 0; i< filesInDir.length; i++) {
return filesInDir[i].getAbsolutePath();
}
}
}else {
return selectedFile.getAbsolutePath(); // Rückgabewert des Filechoosers ( wenns kein Ordner ist )
}
}
return null;
}
das hier ist der Code .. einmal der Teil in dem mein FileChooser aufgerufen wird und dann das selektierte File in die Liste geschrieben wird. Und einmal der FileChooser welcher entweder den Ordner ( also die darin enthaltenen Dateien ) oder ein einzelnes File übergeben soll.
Hoffe das mein Problem halbwegs verständlich ist :/
Danke schon mal