0
SWT에서 드래그 앤 드롭 기능을 구현 중입니다. 여기SWT에서 이벤트가 두 번 이상 끊김
내 코드 드롭
private class MyDropTargetAdapter extends DropTargetAdapter {
@Override
public void dragEnter(DropTargetEvent event) {
event.detail = DND.DROP_LINK;
}
/**
* {@inheritDoc}
*/
@Override
public void dragOver(DropTargetEvent event) {
// Do some functionality
}
/**
* {@inheritDoc}
*/
@Override
public void drop(DropTargetEvent event) {
event.detail = DND.DROP_NONE;
}
}
위해 드래그
private class MyDragSourceAdapter extends DragSourceAdapter {
/** The m tree viewer. */
private final TreeViewer treeViewer;
/**
* Instantiates a new my drag source adapter.
*
* @param treeViewer the tree viewer
*/
public MyDragSourceAdapter(TreeViewer treeViewer) {
this.treeViewer = treeViewer;
}
/**
* {@inheritDoc}
*/
@Override
public void dragFinished(DragSourceEvent event) {
// clean buffer
// k = null;
}
/**
* {@inheritDoc}
*/
@Override
public void dragSetData(DragSourceEvent event) {
event.data = "test";
}
/**
* {@inheritDoc}
*/
@Override
public void dragStart(DragSourceEvent event) {
if (some condition) {
// do something
return;
}
event.doit = false;
}
}
를 들어 일부 시간 "로 dragOver()" 방법이라고 한 번 이상
니펫입니까? 드래그는 dragOver() 메서드가 호출 될 때까지 여러 번 발생합니다.
첫 번째 작업 후에 드롭 작업을 중지하고 싶습니다.
실제 강하가 발생하기 전에 마우스가 여전히 컨트롤 위에 마우스 때
이 동작은 의도 한 것입니다. JavaDoc을 읽으면 커서가 드롭 대상 위로 이동하는 경우 이벤트가 발생합니다. 'drop()'이벤트를 듣고 drop.operation이 실제로 수행 될 때 정보를 얻는다. [DnD in SWT] (https://eclipse.org/articles/Article-SWT-DND/DND-in-SWT.html) 기사는 respecive 이벤트의 의미를 잘 설명합니다. –
예, Rüdiger Herrmann이 맞습니다. Doc를 읽으십시오. drop 메소드가 여러 번 호출 될 것이므로이 메소드를 호출해도 추가 조치를 중지하는 논리를 작성합니다. –