2017-02-16 94 views
-1

編輯答案和更新代碼:了JavaFx拖放圖片從一個圖像視圖到另一個

我有一個JavaFX應用程序,我想從一個圖像視圖在同一個窗口中拖動圖像到另一個。但我無法想出讓第二個圖像視圖接受並顯示圖像的方法。

Image image = new Image("file:src/drag_and_drop_6/Notes.png"); 
    ImageView iv = new ImageView(); 
    iv.setImage(image); 

    Image image2 = new Image("file:src/drag_and_drop_6/orca.png"); 
    ImageView iv2 = new ImageView(); 
    iv2.setImage(image2); 


    iv.setOnDragDetected((MouseEvent event) -> { 
     Dragboard db = iv.startDragAndDrop(TransferMode.ANY); 
     ClipboardContent content = new ClipboardContent(); 
     content.putImage(iv.getImage()); 
     db.setContent(content); 
     event.consume(); 
    }); 

    iv.setOnDragOver(new EventHandler<DragEvent>() { 
     public void handle(DragEvent event) { 
      if (event.getGestureSource() != iv && 
        event.getDragboard().hasImage()) { 
        event.acceptTransferModes(TransferMode.COPY_OR_MOVE); 
       } 
      event.consume(); 

      } 
    }); 

    iv.setOnDragDone(new EventHandler<DragEvent>() { 
     public void handle(DragEvent event) { 

      Dragboard db = event.getDragboard(); 

      if (db.hasImage()) { 
       iv2.setImage(db.getImage()); 
      } 
      event.consume(); 

     } 
    }); 
+0

你究竟在哪裏試圖改變第二個圖像視圖中顯示的圖像?你可以包含該代碼嗎? –

+0

@James_D,我正在研究一個應用程序,其中用戶應該能夠根據重要性重新排列流窗格中的節點。我正在做拖放的第一次體驗,並試圖弄清楚事情是如何工作的。 – rainer

+0

我其實希望能夠使用他們的ID移動節點... – rainer

回答

0

我發現我自己在Can't manage to do drag and drop in a GridPane slipups。

ClipboardContent content = new ClipboardContent(); 
    content.putImage(iv.getImage()); 
    // instead of 
    // content.putString(iv.getId()); 

if (db.hasImage()) { 
     iv2.setImage(db.getImage()); 
    } 

全整流代碼是上方。

相關問題