Ich habe in den letzten Tagen einen JFileChooser in mein Coding eingebaut. Dieser funktioniert zu großem Teil. Ich habe jetzt noch ein einziges Problem!!!
Der JFilechooser dient dem Kopieren und Verschieben von Dateien. Ich habe in meinem eigen generierten JFrame zwei JFileChooser eingebaut, einen für das Quellverzeichnis und einen für das Zielverzeichnis. Hier wähle ich dann meine Quelldatei (ausschließlich MP3-Dateien) über den einen JFilechooser aus und mein Zielverzeichnis entsprechend mit dem zweiten JFileChooser aus.
Mein eigentliches Problem ist folgendes:
Es gibt im JFileChooser oben die "Suchen in"-Option (Pull-Down-Menü). Dort kann man ja alle Laufwerke / Partitionen, den Desktop, die Netzwerkumgebung usw auswählen. Dies funktioniert dahin gehend, dass ich beispielsweise auf die Option "Desktop" an Zielverzeichnis anklicke. Allerdings kann ich nicht direkt auf den Desktop eine Datei hinkopieren /-verschieben. Ich muss jetzt nochmals einen Ordner dort auswählen (falls vorhanden), damit ich eine Datei dorthin wegschreiben kann. Kurz gesagt ich kann bis dato noch nicht auf die höchste Ebene eines Laufwerks bzw. auf den Dekstop direkt eine Datei wegschreiben, bzw. der Filechooser erkennt eine solche Auswahl nicht als gültigen Pfad.
Zum besseren Verständnis meine bisherigen Codezeilen von meinem Chooser:
Gruss
the_rookie
???:L
Der JFilechooser dient dem Kopieren und Verschieben von Dateien. Ich habe in meinem eigen generierten JFrame zwei JFileChooser eingebaut, einen für das Quellverzeichnis und einen für das Zielverzeichnis. Hier wähle ich dann meine Quelldatei (ausschließlich MP3-Dateien) über den einen JFilechooser aus und mein Zielverzeichnis entsprechend mit dem zweiten JFileChooser aus.
Mein eigentliches Problem ist folgendes:
Es gibt im JFileChooser oben die "Suchen in"-Option (Pull-Down-Menü). Dort kann man ja alle Laufwerke / Partitionen, den Desktop, die Netzwerkumgebung usw auswählen. Dies funktioniert dahin gehend, dass ich beispielsweise auf die Option "Desktop" an Zielverzeichnis anklicke. Allerdings kann ich nicht direkt auf den Desktop eine Datei hinkopieren /-verschieben. Ich muss jetzt nochmals einen Ordner dort auswählen (falls vorhanden), damit ich eine Datei dorthin wegschreiben kann. Kurz gesagt ich kann bis dato noch nicht auf die höchste Ebene eines Laufwerks bzw. auf den Dekstop direkt eine Datei wegschreiben, bzw. der Filechooser erkennt eine solche Auswahl nicht als gültigen Pfad.
Zum besseren Verständnis meine bisherigen Codezeilen von meinem Chooser:
Java:
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.io.File;
import javax.swing.*;
import javax.swing.filechooser.FileFilter;
public class FileChoosing_Quellverzeichnis {
static File[] file;
static String[] dateiname_quelle;
static String dateipfad_quelle;
static String komplettpfad_quelle;
static String dateinameQuelle;
public FileChoosing_Quellverzeichnis(){
UIManager.put("FileChooser.readOnly", Boolean.TRUE);
JFileChooser fc = new JFileChooser("F:/Programmierung/Workspace/Programmierprojekt01/Musik/");
//boolean hide = true;
//hide = false;
//disableTextComponent(fc,hide);
fc.setMultiSelectionEnabled(true);
fc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
disableTF(fc);
fc.setFileFilter( new FileFilter() {
@Override public boolean accept( File f )
{
return f.isDirectory() || f.getName().toLowerCase().endsWith( ".mp3" );
}
@Override public String getDescription() {
return "MP3-Musikdateien";
}
} );
int state = fc.showOpenDialog( null );
if ( state == JFileChooser.APPROVE_OPTION ) {
file = fc.getSelectedFiles();
for(int i = 0; i<file.length;i++){
dateiname_quelle = new String[file.length];
System.out.println(file[i].getName()); //Name der Musikdatei
System.out.println(file[i]); //kompletter Pfad der Musikdatei
dateiname_quelle[i] = file[i].getName();
dateipfad_quelle = file[0].getParent();
dateinameQuelle = file[0].getName();
}
for(int k = 0; k < dateiname_quelle.length; k++){
if(k == 0){
komplettpfad_quelle = dateipfad_quelle.concat("\\").concat(dateiname_quelle[k]);
}
else{
komplettpfad_quelle = komplettpfad_quelle.concat("\\").concat(dateiname_quelle[k]);
}
}
}
else{
System.out.println( "Auswahl abgebrochen" );
//System.exit( 0 );
}
}
static public boolean disableTF(Container c) {
// wird rekursiv aufgerufen!!
// disabled 1. vorkommendes JTextField!!!!
Component[] cmps = c.getComponents();
int i=0;
for (Component cmp : cmps) {
System.out.println((i++)+": "+cmp);
if (cmp instanceof JTextField) {
((JTextField) cmp).setEnabled(false);
((JTextField) cmp).setBackground(Color.YELLOW);
return true;
}
if (cmp instanceof Container) {
// geht Stufe tiefer!!
if (disableTF((Container) cmp)) {
return true;
}
}
}
return false;
}
}
Gruss
the_rookie
???:L
Zuletzt bearbeitet: