javafx 2.1: Drag and Drop issue (Mac)
921851May 28 2012 — edited May 29 2012Hi all,
As I related in other question I've posted here today, I'm having some problems when running my code which worked on windows now that I'm on a mac. This one is related to drag and drop, it used to work on windows (Write once, debug everywhere!) but now the onDragDropped event is not being fired. Here's the code. Any help is appreciated. Thanks in advance
HRWindowGridPane.setOnDragEntered(new EventHandler<DragEvent>() {
@Override
public void handle(DragEvent event) {
System.out.println("Drag entered");
lblPhoto.setEffect(finalBlend);
event.consume();
}
});
HRWindowGridPane.setOnDragExited(new EventHandler<DragEvent>() {
@Override
public void handle(DragEvent event) {
lblPhoto.setEffect(null);
System.out.println("Drag exited");
event.consume();
}
});
EventHandler<DragEvent> onDragOver = new EventHandler<DragEvent>() {
public void handle(DragEvent event) {
/* data is dragged over the target */
/* accept it only if it is not dragged from the same node
* and if it has a string data */
if (event.getGestureSource() != HRWindowGridPane &&
event.getDragboard().hasFiles()) {
/* allow for both copying and moving, whatever user chooses */
event.acceptTransferModes(TransferMode.ANY);
System.out.println("Drag over");
}
event.consume();
}
};
HRWindowGridPane.setOnDragOver(onDragOver);
HRWindowGridPane.setOnDragDropped(new EventHandler<DragEvent>()
{
@Override
public void handle(DragEvent event)
{
System.out.println("Drag dropping");
Dragboard db = event.getDragboard();
System.out.println("Drag dropped: got dragboard from event!");
if(db.hasFiles())
{
System.out.println("Drag dropped: dragboard has files!");
for(File file:db.getFiles())
{
if(file.getName().contains(".jpg") || file.getName().contains(".jpeg") || file.getName().contains(".JPG"))
{
Image img;
try
{
System.out.println("Everything is fine until image processing... hmmm");
img = new Image(file.toURI().toURL().toString(), 118.0, 88.0, false, true);
ImageView view = new ImageView(img);
view.setFitWidth(118.0);
view.setFitHeight(88.0);
view.resize(118.0, 88.0);
lblPhoto.setGraphic(view);
avatarImage = file;
}
catch (IOException e)
{
e.printStackTrace();
}
}
else
{
AlertWindow alert = new AlertWindow("Falha", "O Arquivo não é uma imagem JPG válida");
try
{
Stage stage = new Stage();
alert.start(stage);
stage.toFront();
HRWindowGridPane.toBack();
stage.centerOnScreen();
stage.show();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
event.setDropCompleted(true);
event.consume();
}
});
HRWindowGridPane.setOnDragDone(new EventHandler<DragEvent>() {
@Override
public void handle(DragEvent event)
{
System.out.println("Drag done");
}
});