0
我在運行我的代碼時遇到了一些問題,這些代碼在windows下工作,現在我在Mac上。這與拖放有關,它用於在Windows上工作(編寫一次,無處不在!),但現在onDragDropped事件沒有被觸發(我已經使用System.out.println()測試過)。這是代碼。任何幫助表示讚賞。有關係統預先感謝拖放問題(Mac)
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");
}
});
更多信息:
Brunos-MacBook-Pro:~ bruno$ java -version
java version "1.7.0_04"
Java(TM) SE Runtime Environment (build 1.7.0_04-b21)
Java HotSpot(TM) 64-Bit Server VM (build 23.0-b21, mixed mode)
的JavaFX 2.1版