2017-02-14 2 views
-1

ドラッグを実装しようとしています&ユーザーが選択した要素をエクスポートするJavaスイングベースのアプリケーションからのドロップサポート。 JPanelでは、私はいくつかのユーザーインターフェイスをレンダリングするために様々なものを使用します。ある時点で、ユーザーはそのJPanel内のどこかでShiftキーを押しながら左クリックし、次にファイルエクスプローラにドラッグすることになっています。スイングアプリケーションからカスタムイベントのファイルへのJavaドラッグ&ドロップ

私はTransferHandlerの譲渡を使用してSwingコンポーネントベースのドラッグ&ドロップを追加する方法のためのさまざまなチュートリアルを見つけましたが、アプリケーションは、Shiftキー+ Leftclickイベントを検出した後、実際にドラッグ&ドロップ・プロセスを開始する方法を、見つけ出すことができませんでした。 また、エクスポートされたファイルを一時的なフォルダに作成してから、転送可能なパスにパスを渡して、何とかドラッグを開始する必要があります。&ドロッププロセスですか?

+0

何を試しましたか?あなたはいくつかのコードを表示することができますあなたは立ち往生している? – PMerlet

+1

本当に、並べ替えはできません。システムは「ドラッグイベント」を監視し、それに対処できるようにイベントを提供します。 1つの考え方は、Shift +左クリックイベントが検出されるまで、ドラッグの要求を拒否することです。このような場合は、移行可能なAPIを超えて、[example]のコアAPI – MadProgrammer

+1

(http://stackoverflow.com/questions/15520610/java-drag-and-drop/15521421)にアクセスする必要があります#15521421)、[example](http://stackoverflow.com/questions/11201734/java-how-to-drag-and-drop-jpanel-with-its-components/11443501#11443501)、[example](http ://stackoverflow.com/questions/16478413/move-component-after-drag-and-drop/16481711#16481711)、[example](http://stackoverflow.com/questions/26621830/jlayeredpanel-layout-manager-自由移動オブジェクト/ 26624184#26624184) – MadProgrammer

答えて

0

MadProgrammerが提案したexampleを使用して問題を解決しました。 さらに、DataFlavor.javaFileListFlavorが使用されました。 dragGestureRecognizedが次のように変更されました:

@Override 
public void dragGestureRecognized(DragGestureEvent dge) 
{ 
    if (!dge.getTriggerEvent().isShiftDown()) 
    { 
    return; 
    } 

    // Create our transferable wrapper 
    Transferable transferable = new FileTransferable(dataObjectsPanel.getDragExportFiles()); 

    // Start the "drag" process... 
    DragSource ds = dge.getDragSource(); 
    ds.startDrag(dge, Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR), transferable, this); 
} 
関連する問題