Javafx拖放,完成放置后将元素放入数组中?

时间:2019-03-11 10:36:17

标签: java javafx game-physics mvp

我创建了一个表示网格窗格中位置的数组。 当图像在该位置的网格中放置时,我试图将字符串(代表图像)放入数组中。 我的问题是,它不会将第一个图像getRingSource放入数组中。

我该怎么做也将Image放入数组中?

这是我的代码:

public class CRSpelPresenter {

private CRModel model;
private CRSpelView spelView;

private String[][][] bord = new String[3][3][3];

public CRSpelPresenter(CRModel model, CRSpelView view) {
    this.model = model;
    this.spelView = view;
    addEventHandlers();
    updateView();
}

private void addEventHandlers() {

    // onDragDetected aan source
    EventHandler<MouseEvent> dragDeteced = new EventHandler<MouseEvent>() {
        @Override
        public void handle(MouseEvent event) {
            ImageView source = (ImageView) event.getSource();
            Dragboard dragboard = source.startDragAndDrop(TransferMode.MOVE);
            ClipboardContent content = new ClipboardContent();
            content.putImage(source.getImage());
            dragboard.setContent(content);
            System.out.println("dragDetected");
            event.consume();
        }
    };

    Random rnd = new Random();
    int j = rnd.nextInt(9);
    spelView.setRingSource(j);

    spelView.getRingSource().setOnDragDetected(dragDeteced);

    dropHandeler(spelView.getRingTarget());
    dropHandeler(spelView.getRingTarget1());
    dropHandeler(spelView.getRingTarget2());
    dropHandeler(spelView.getRingTarget3());
    dropHandeler(spelView.getRingTarget4());
    dropHandeler(spelView.getRingTarget5());
    dropHandeler(spelView.getRingTarget6());
    dropHandeler(spelView.getRingTarget7());
    dropHandeler(spelView.getRingTarget8());

    //onDragDone aan source
    EventHandler<DragEvent> dragDone = new EventHandler<DragEvent>() {
        @Override
        public void handle(DragEvent event) {
            ImageView source = (ImageView) event.getSource();
            if (event.getTransferMode() == TransferMode.MOVE) {
                source.setImage(spelView.getRingReplace());

                if(spelView.getRingSource() == spelView.getRingTarget()) {
                    bord[0][0][0]=spelView.getRingen(j);
                } else if (spelView.getRingSource() == spelView.getRingTarget1()) {
                    bord[1][0][0]=spelView.getRingen(j);
                }else if (spelView.getRingSource() == spelView.getRingTarget2()) {
                    bord[2][0][0]=spelView.getRingen(j);
                }else if (spelView.getRingSource() == spelView.getRingTarget3()) {
                    bord[0][1][0]=spelView.getRingen(j);
                }else if (spelView.getRingSource() == spelView.getRingTarget4()) {
                    bord[1][1][0]=spelView.getRingen(j);
                }else if (spelView.getRingSource() == spelView.getRingTarget5()) {
                    bord[2][1][0]=spelView.getRingen(j);
                }else if (spelView.getRingSource() == spelView.getRingTarget6()) {
                    bord[0][2][0]=spelView.getRingen(j);
                }else if (spelView.getRingSource() == spelView.getRingTarget7()) {
                    bord[1][2][0]=spelView.getRingen(j);
                }else if(spelView.getRingSource() == spelView.getRingTarget8()) {
                    bord[2][2][0]=spelView.getRingen(j);
                }

            }

            System.out.println("DragDone");
            event.consume();
        }
    };


    spelView.getRingSource().setOnDragDone(dragDone);



}


private void dropHandeler(ImageView target) {
    // onDragOver aan target
    target.setOnDragOver(new EventHandler<DragEvent>() {
        @Override
        public void handle(DragEvent event) {
            System.out.println("dragover");
            if (event.getGestureSource() != target && event.getDragboard().hasImage()) {
                event.acceptTransferModes(TransferMode.MOVE);
            }
            event.consume();
        }
    });



    //onDragDropped aan target
    target.setOnDragDropped(new EventHandler<DragEvent>() {
        @Override
        public void handle(DragEvent event) {
            Dragboard db = event.getDragboard();
            boolean succes = false;


            if (db.hasImage()) {
                Random rnd = new Random();
                int i = rnd.nextInt(9);
                spelView.setRingReplace(i);
                System.out.println(spelView.getRingen(i));

                if(target == spelView.getRingTarget()) {
                    bord[0][0][0]=spelView.getRingen(i);
                } else if (target == spelView.getRingTarget1()) {
                    bord[1][0][0]=spelView.getRingen(i);
                }else if (target == spelView.getRingTarget2()) {
                    bord[2][0][0]=spelView.getRingen(i);
                }else if (target == spelView.getRingTarget3()) {
                    bord[0][1][0]=spelView.getRingen(i);
                }else if (target == spelView.getRingTarget4()) {
                    bord[1][1][0]=spelView.getRingen(i);
                }else if (target == spelView.getRingTarget5()) {
                    bord[2][1][0]=spelView.getRingen(i);
                }else if (target == spelView.getRingTarget6()) {
                    bord[0][2][0]=spelView.getRingen(i);
                }else if (target == spelView.getRingTarget7()) {
                    bord[1][2][0]=spelView.getRingen(i);
                }else if(target == spelView.getRingTarget8()) {
                    bord[2][2][0]=spelView.getRingen(i);
                }
                target.setImage(db.getImage());

                succes = true;
            }
            for (int j = 0; j < bord.length ; j++) {
                for (int k = 0; k <bord[j].length ; k++) {
                    System.out.print(bord[j][k][0] + " ");
                }
                System.out.println();
            }
            event.setDropCompleted(succes);
            System.out.println("dragDropped");
            event.consume();
        }
    });

}

0 个答案:

没有答案