2016-03-22 8 views
0

Ich möchte zwei Kreise durch Ziehen verbinden & Drop.JavaFX8 startFullDrag() nicht effektiv

Pane p = new Pane(); 

Circle c1 = new Circle(5); 
c1.relocate(10,10); 
c1.addEventFilter(MouseEvent.DRAG_DETECTED, e -> { 
    c1.startFullDrag(); 
    System.out.println("started"); 
}); 

Circle c2 = new Circle(5); 
c2.relocate(40,40); 
c2.addEventFilter(DragEvent.ANY, e -> System.out.println("any")); 
c2.addEventFilter(DragEvent.DRAG_ENTERED, e -> System.out.println("entered")); 

p.getChildren().addAll(c1, c2); 

Das habe ich ausprobiert.
Wenn ziehen & aus dem linken Kreis c1 auf den rechten Kreis c2 fallen, wird das DRAG_DETECTED Event funktionieren.
Aber die DragEvent.ANY oder DragEvent.DRAG_ENTERED wird nicht ausgelöst.

Ich habe auch versucht, Mausereignisse in DRAG_DETECTED zu konsumieren, aber das ändert auch nichts. Ich habe auch versucht mit setOnDragEntered(EventHandler) und addEventHandler(EventType, EventHandler) anstelle von addEventFilter(EventType, EventHandler) aber keiner funktioniert.

Warum erhält c2 keine DragEvent s?

Antwort

0

startFullDrag() wird MouseDragEvents, aber nicht DragEvents auslösen.

ersetzen addEventFilter(DragEvent.DRAG_ENTERED, ...); mit addEventFilter(MouseDragEvent.DRAG_ENTERED, ...);