서로의 위에 레이블을 끌어다 놓으려고합니다.JavaFX OnDragDropped 등록하지 않음
private void giveDragAndDropProperties(Label label) {
//Enable drag actions to pick up the label
label.setOnDragDetected(new EventHandler<MouseEvent>() {
public void handle(MouseEvent event) {
System.out.println("Drag and drop started!");
Dragboard db = label.startDragAndDrop(TransferMode.ANY);
ClipboardContent content = new ClipboardContent();
int index = starsAndBars.indexOf(label);
content.putString("test");
db.setContent(content);
event.consume();
}
});
label.setOnDragEntered(new EventHandler<DragEvent>() {
public void handle(DragEvent event) {
System.out.println("drag entered!");
}
});
label.setOnDragExited(new EventHandler<DragEvent>() {
public void handle(DragEvent event) {
System.out.println("drag left!");
}
});
//Enable a label to be dropped on this label
label.setOnDragDropped(new EventHandler<DragEvent>() {
public void handle(DragEvent event) {
System.out.println("Drop occurred!");
}
});
}
내가 드래그를 수행하고 드롭 조작을 시도, 이것은 내가 볼 것입니다 :
나는 starsAndBars라는 라벨의 목록을 가지고 있고,이 생성 될 때마다 라벨이 그것에 요구했다 :
Drag and drop started!
drag entered!
drag left!
drag entered!
<I release the mouse here>
drag left!
"onDragDropped"이벤트는 내가 알 수있는 한 등록하지 않습니다. 내가 도대체 뭘 잘못하고있는 겁니까? 나는 "입력 된"이벤트와 "종료 된"이벤트를 등록하기 때문에 각 레이블에 끌어서 놓기 이벤트 처리기가 있다는 것을 알 수 있습니다. 이것은 끌어서 놓기 이벤트 처리기를 다루는 유일한 코드 조각이므로 먼저 다른 것으로 소비되어야합니다.
모든 레이블이 ScrollPane 내에있는 HBox에 있으면 차이가 있습니다.
편집 : HBox에 드롭 이벤트를 넣으려고했는데 동일한 레이블이 레이블에 포함되어 있습니다. 결코 호출되지 않습니다. 그 setOnDragDropped에 대한 코드는 다른 예제의 코드와 본질적으로 동일합니다.
나는 setOnDragDetected 및 setOnDragDropped를 모두 다시 작성하려고 시도했으며 가능한 한이 예제 (http://docs.oracle.com/javafx/2/drag_drop/jfxpub-drag_drop.htm)와 밀접하게 일치시키기 위해 노력하고 있습니다.
편집 2 : 다른 개체를 사용하여 드래그 앤 드롭 이벤트가이 이벤트와 거의 동일하게 작동하는 다른 프로젝트가 있습니다. - 해당 프로젝트에서 소스를 복사 (및 변수 이름 변경)를 시도했습니다. . 그것이 도움이된다면 나는 그 근원을 포함시킬 수있다. 그러나 그것은 본질적으로 동일합니다.
답변을 얻으려면 더 무엇을 포함시킬 수 있습니까?