2016-04-06 4 views
1

Ich bin ein Musicplayer GUI zu schaffen, die implementiert eine Drag & Drop auf den Tisch Datei, dieJTable mit Swings Drag & Drop Dateien

public void drop(DropTargetDropEvent dtde){ 
      dtde.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE); 
      Transferable t = dtde.getTransferable(); 
      try { 
       List fileList = (List)t.getTransferData(DataFlavor.javaFileListFlavor); 
       File f = (File)fileList; 
       addDnDFile(fileList); 
      } catch (UnsupportedFlavorException ex) { 
      } catch (IOException ex) { 
      } 

     } 

Ab jetzt kann ich nicht möglich scheinen, um herauszufinden Möglichkeit, eine Liste in eine Datei zu konvertieren, um meine addDnDFile-Methode verwenden zu können, die die Datei meinem Musikplayer hinzufügt.

+0

Um eine bessere Hilfe zu erhalten, sollten Sie ein [MCVE] oder [Short, Self Contained, Correct Example] (http://www.sscce.org/) veröffentlichen. –

+0

}} catch (UnsupportedFlavorException ex) { } catch (IOException ex) { } 'Ignoriere die Exception-Ausgabe nicht. –

+0

'for (Objekt o: fileList) {' ... dann überprüfen, um zu sehen, von 'o' ist ein' instanceof' 'File' ... vielleicht so etwas wie [this] (http://stackoverflow.com/questions/ 13639804/Ziehen-und-Ablegen-Dateien-von-os-in-jtable-java/13640115 # 13640115) – MadProgrammer

Antwort

2

A List ist natürlich kein File, es ist ein List von File s

Leider war dies, bevor wir Generika bekam;), aber im Grunde wollen Sie über die List laufen und überprüfen, dass jeder Eintrag tatsächlich ist ein File und mit ihr umgehen in welcher Weise auch immer Sie zum Beispiel wollen

@Override 
public synchronized void drop(DropTargetDropEvent dtde) { 
    if (dtde.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) { 
     dtde.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE); 
     Transferable t = dtde.getTransferable(); 
     List fileList = null; 
     try { 
      fileList = (List) t.getTransferData(DataFlavor.javaFileListFlavor); 
      if (fileList != null && fileList.size() > 0) { 
       for (Object value : fileList) { 
        if (value instanceof File) { 
         File f = (File) value; 
         if (row < 0) { 
          model.addRow(new Object[]{f.getAbsolutePath(), "", f.length(), "", ""}); 
         } else { 
          model.insertRow(row, new Object[]{f.getAbsolutePath(), "", f.length(), "", ""}); 
          row++; 
         } 
        } 
       } 
      } 
     } catch (UnsupportedFlavorException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } else { 
     dtde.rejectDrop(); 
    } 
} 

für ein lauffähiges Beispiel können Sie drag and drop files from OS into JTable java

überprüfen 0