Проблема с перетаскиванием (Mac)

У меня возникают некоторые проблемы при запуске моего кода, который работал под Windows, теперь, когда я на Mac. Это связано с перетаскиванием, раньше оно работало в окнах (напишите один раз, отлаживайте везде!), но теперь событие onDragDropped не запускается (я тестировал с помощью System.out.println()). Вот код. Любая помощь приветствуется. заранее спасибо

    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


person Bruno Vieira    schedule 28.05.2012    source источник


Ответы (1)


Проблема сейчас в jira как ошибка. Вот ссылка, которую я получил с другого форума, надеюсь, она будет исправлена, когда выйдет версия 2.2.

http://javafx-jira.kenai.com/browse/RT-20253

ИЗМЕНИТЬ

Чтобы этот ответ обновлялся. Проблема с перетаскиванием была решена, когда JavaFX-2 перешла на общедоступную версию. Это работает как шарм на MacOS X с jre 1.7+

person Bruno Vieira    schedule 30.05.2012