2012-02-03 87 views
2

我正在製作一個java applet,通過Drag和Drop.I工作,將文件從網站傳輸到我的桌面,但是,有什麼方法可以學習何時開始刪除?我使用MouseListener來列出鼠標動作並使用我的transferhandler類用於傳輸數據。下面有沒有辦法在拖放中達到拖放時間?

這樣的代碼..

public class DragApplet extends JApplet 
{  
    public void init() 
    {  
     Container contentPane = getContentPane(); 

     Image image = ...; 
     JLabel label = new JLabel(new ImageIcon(image)); 
     label.setTransferHandler(new ImageSelection()); 

     MouseListener listener = new MouseAdapter() 
     { 
      public void mousePressed(MouseEvent me) { 

        JComponent comp = (JComponent) me.getSource(); 
        TransferHandler handler = comp.getTransferHandler(); 
        handler.exportAsDrag(comp, me, TransferHandler.COPY); 
      } 
     }  
     label.addMouseListener(listener); 
     contentPane.add(label,BorderLayout.CENTER); 
    } 
} 

class ImageSelection extends TransferHandler implements Transferable 
{ 
    private static final DataFlavor flavors[] = { DataFlavor.javaFileListFlavor }; 

    public ImageSelection(){ // bla bla.. } 

    public int getSourceActions(JComponent c) { 
     // bla bla.. 
     return TransferHandler.COPY; 
    }  

    public Transferable createTransferable(JComponent comp) { 
     // bla bla.. 
     return this; 
    } 

    public DataFlavor[] getTransferDataFlavors() { 
     // bla bla..  
     return flavors; 
    } 

    public boolean canImport(JComponent comp, DataFlavor flavor[]) { 
     // bla bla.. 
     return true; 
    }  

    public Object getTransferData(DataFlavor flavor){ 
     //Download starts and save "C:\\Temp\\aa.mpg" here.. 
     String[] ary= {"C:\\Temp\\aa.mpg\\"};   
     return Arrays.asList(ary);    
    }  

    public boolean importData(JComponent comp, Transferable t) { 
     // bla bla.. 
     return false; 
    }  

    public boolean isDataFlavorSupported(DataFlavor flavor) { 
     // bla bla.. 
     return true; 
    } 
} 
+0

你要實現什麼功能? – 2012-02-03 12:49:35

+0

我在我的TransferHandler類上實現了Transferable。鼠標監聽器創建了一些方法,如mousepressed,mousereleased .. – sfenx 2012-02-03 13:23:24

+1

這應該有讀*「你有什麼功能**嘗試**實現?」*,但你的評論完全沒有告訴我。這樣想想吧。這是您用來說服潛在最終用戶選擇您的應用的功能。在另一個。向我解釋這個功能,就像你對最終用戶的功能一樣 - 注意到如果你告訴最終用戶你剛纔寫給我的信息,他們根本就不知道你在說什麼。再次,*功能是什麼?* – 2012-02-03 13:45:19

回答

1

我不知道你是怎麼創建Transferable,因爲它沒有在這個問題包括在內。在拖放過程中,只要開始拖動,就會創建Transferable。但是,不需要在Transferable的構造函數中開始下載。

對於特定的DataFlavor調用Transferable#getTransferData方法時,即可以開始下載,除非DropTarget嚴重實施,只有在發生丟棄時才調用。

+0

我編輯了我的問題並顯示了我的代碼。如果您不忙,請查看代碼並幫助我解決問題。感謝您的幫助。 – sfenx 2012-02-06 08:36:28