Целевое событие перетаскивания JavaFX null - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть цикл for, который создает несколько прямоугольников, и я добавляю к ним DragDropped события.По какой-то причине, даже несмотря на то, что источник сообщает об этом как об успешном (и цвет прямоугольника изменяется), когда я иду, чтобы проверить цель, он сообщается как null.

ParkingSpot - это просто класс, который расширяетсяRectangle и добавляет новые биты информации, которые мне нужно сохранить в них.

Кроме того, TransferMode.COPY устанавливается для источника и цели (ParkingSpot), поэтому это не должно быть проблемой.

private ParkingSpot createRectangle(double x, double y, double width, double height){
   ParkingSpot vehicleSpot = new ParkingSpot(x, y, width, height);

...

spot.setOnDragDropped(event -> {
   System.out.println("onDragDropped");
   Dragboard db = event.getDragboard();
   boolean success = false;
   if (db.hasString()) {
        spot.setTestinfo(db.getString());
        System.out.println( " added to " + spot.getTestinfo());
        spot.setFill(Color.BLUE);
        success = true;
    }
    event.setDropCompleted(success);
    event.consume();
});
}

В этом spot.setFill(Color.BLUE); работает, но по некоторым причинам spot.getTestinfo() не работает.То же самое касается и меня с помощью spot.getX (), который также работает.Я не понимаю, как это может установить цвет, но не текст.Мои извинения, если это немного кратко.Я могу добавить больше, если нужно.

РЕДАКТИРОВАТЬ: Вот как я создаю прямоугольники:

for (ParkingSpot spot : parkingSpots){
    pane.getChildren().add(createDraggableRectangle(spot.getX(), spot.getY(), spot.getWidth(), spot.getHeight()));
}

Это циклически перебирает Список парковочных мест и добавляет их в список для сохранения и загрузки..

Это элементы ListView и то, как я копирую их информацию в драгборд.Я знаю, что это работает, так как когда я перетаскиваю его в форму, он выводит содержимое, которое он уронил.

listCell.setOnDragDetected(event -> {
     /* drag was detected, start a drag-and-drop gesture*/
     /* allow any transfer mode */
     Dragboard db = listCell.startDragAndDrop(TransferMode.COPY);

     /* Put a string on a dragboard */
     ClipboardContent content = new ClipboardContent();
     content.putString(listCell.getText());
     db.setContent(content);
     System.out.println("Dragging" + content);

     event.consume();
});

Все здесь в моем классе Controller.java.

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...