I have a Tilepane(source) which loaded the images i stored in database, I would like to drag any images loaded in my Tilepane and drop it to some Imageview(target) which i provided in the FXML scene builder.
I was getting trouble in startDragAndDrop(TransferMode.MOVE) because my the image in my source is not not final imageview as they load from databases.
I would need an example of how to deal with dropping of images into an JavaFX ImageView(target) from my Tilepane(source).
Thank and best regards, Steps.
try {
Try2.pstmtGetAlbumPhoto = Try2.getConnection().prepareStatement(RetrievePhoto);
ResultSet RSphoto = Try2.pstmtGetAlbumPhoto.executeQuery();
while(RSphoto.next()){
imageView = new ImageView();
imageView.setFitWidth(120);
imageView.setFitHeight(70);
String Path = RSphoto.getString("Path");
System.out.println(Path);
BufferedImage images = null;
try {
images = ImageIO.read(new File(Path));
} catch (IOException ex) {
System.out.println("Image failed to load.");
}
WritableImage wr = null;
if (images != null) {
wr = new WritableImage(images.getWidth(), images.getHeight());
PixelWriter pw = wr.getPixelWriter();
for (int x = 0; x < images.getWidth(); x++)
{
for (int y = 0; y < images.getHeight(); y++) {
pw.setArgb(x, y, images.getRGB(x, y));
}
}
}
imageView.setImage(wr);
final ImageView currentImage = new ImageView();
currentImage.setImage(wr);
currentImage.setId(this.getClass().getSimpleName() + System.currentTimeMillis());
imageView.setOnDragDetected(new EventHandler<MouseEvent>() {
public void handle(MouseEvent event) {
Dragboard db = currentImage.startDragAndDrop(TransferMode.ANY);
ClipboardContent content = new ClipboardContent();
content.putImage(currentImage.getImage());
content.putString(getName());
db.setContent(content);
event.consume();
}
});
target.setOnDragOver(new EventHandler<DragEvent>() {
public void handle(DragEvent event) {
Dragboard db = event.getDragboard();
if (db.hasImage() || db.hasFiles()) {
event.acceptTransferModes(TransferMode.COPY);
}
}
});
target.setOnDragDropped(new EventHandler<DragEvent>() {
public void handle(DragEvent event) {
Dragboard db = event.getDragboard();
if (db.hasImage()) {
target.setImage(db.getImage());
String x = db.getString();
System.out.println(x);
;
event.setDropCompleted(true);
}
}
});
TilePane3.getChildren().addAll(imageView);
}
} catch (SQLException ex) {
Logger.getLogger(FXMLDocumentController.class.getName()).log(Level.SEVERE, null, ex);
}