2017-02-16 7 views
-1

Edited ответ и обновленный код: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

Я действительно хотел бы иметь возможность перемещать узлы с помощью своих идентификаторов ... – rainer

ответ

0

Я сам нашел slipups в Can't manage to do drag and drop in a GridPane.

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

и

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

Полный выпрямляется код выше.

Смежные вопросы