我创建了一个表示网格窗格中位置的数组。
当图像在该位置的网格中放置时,我试图将字符串(代表图像)放入数组中。
我的问题是,它不会将第一个图像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();
}
});
}