2016-04-06 5 views
1

私はドラッグ&ドロップがJTableの使用スイングは、ドラッグ&ドロップファイル

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) { 
      } 

     } 

今の時点で私はすべての可能性を把握することができないようすることができますテーブルにファイルを実装MusicPlayer GUIを作成していますリストをファイルに変換して、addDnDFileメソッドを使用してファイルを自分のミュージックプレイヤーに追加することができます。

+0

すぐに役立つように、[MCVE]または[短く、自己完結型の正しい例](http://www.sscce.org/)を投稿してください。 –

+0

}} catch(UnsupportedFlavorException ex){ } catch(IOException ex){ } '例外出力を無視しないでください。 –

+0

'for(Object o:fileList){' ... 'o 'が' instanceof' 'File'であることを確認するために...多分[this]のようなものです(http://stackoverflow.com/questions/ 13639804 /ドラッグ・アンド・ドロップ・ファイルfrom-os-into-jtable-java/13640115#13640115) – MadProgrammer

答えて

2

Listは明らかにFileではない、それは我々がジェネリックを持って前に残念ながら、これはだったFile

Listだ;)、基本的に、あなたはListを反復し、各エントリは実際にあることを確認したいですFileと、あなたが好きな方法でそれを実行可能例えば例えば

@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(); 
    } 
} 

を扱う、あなたはdrag and drop files from OS into JTable java

をチェックアウトすることができます0
関連する問題