2012-02-03 9 views
2

ドラッグアンドドロップを使用してウェブサイトからデスクトップにファイルを転送するJavaアプレットを作成していますが、ドロップが始まるときに学習する方法はありますか?私はMouseListenerを使用して、データ転送用。ドラッグアンドドロップでドロップモーメントに達する方法はありますか?

次のコードのような..

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

実装するにはどのような機能がありますか? –

+0

私はTransferHandlerクラスにTransferableを実装しました。マウスリスナーは、mousepressed、mousereleasedなどいくつかのメソッドを作成します。 – sfenx

+1

これは* "どの機能を実装しようとしていますか?*"ですが、あなたのコメントは完全に私に伝えられません。これをこのように考えてください。潜在的なエンドユーザーにあなたのアプリを選択させるために使用している機能です。別のものより。あなたがエンドユーザーに言わせてくれたように、この機能を私に説明してください。あなたがエンドユーザーに私が書いたことを言ったなら、あなたが何を話しているのか分からないでしょう。また、*機能は何ですか? –

答えて

1

それが問題に含まれていないので、私はあなたがあなたのTransferableの作成方法がわかりません。ドラッグアンドドロップ処理では、ドラッグを開始するとすぐにTransferableが作成されます。ただし、Transferableのコンストラクタでダウンロードを開始する必要はありません。

あなたはTransferable#getTransferData方法がDropTargetがひどく低下が発生した場合にのみ呼び出され、実装されていない限り、ある特定のDataFlavor、呼び出されたときにダウンロードを開始することができます。

+0

私は私の質問を編集し、私のコードを示しました。あなたが忙しくないなら、コードを見て、私の問題を助けてください。あなたの助けに感謝します。 – sfenx

関連する問題