나는 새로운 Html5 드래그 앤 드롭 기능을 시도하고 있습니다. 구현은 매우 간단했고 UiBinder는 atutomaticallyHTML5 Google 크롬에서만 작동하는 드래그 앤 드롭
- 에 대한
- onDrop
onDragStart을 mathods을 만들 수 functionallity을 제공
(즉, 당신이 기본적인 드래그를 위해 필요없이 특수 효과를 떨어 전부 AFAIK)또한 Element.DRAGGABLE_TRUE
을 설정하는 것은 어렵지 않습니다. 그러나이 예는 Google 크롬에서만 작동합니다 (그리고 내가 생각한 사파리). IE와 파이어 폭스 모두 아무것도하지 않습니다 (드래그 시작, 드롭 없음, 호버 효과가 없습니다).
package XXXX.client;
import com.google.gwt.core.client.GWT;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.user.client.Element;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.event.dom.client.DragStartEvent;
import com.google.gwt.event.dom.client.DragOverEvent;
import com.google.gwt.event.dom.client.DragEvent;
import com.google.gwt.event.dom.client.DropEvent;
public class Test extends Composite {
private static TestUiBinder uiBinder = GWT.create(TestUiBinder.class);
@UiField
Label label;
@UiField
Label label_1;
interface TestUiBinder extends UiBinder<Widget, Test> {
}
public Test() {
initWidget(uiBinder.createAndBindUi(this));
label.getElement().setDraggable(Element.DRAGGABLE_TRUE);
label_1.getElement().setDraggable(Element.DRAGGABLE_TRUE);
}
@UiHandler(value = { "label", "label_1" })
void onLabelDragOver(DragOverEvent event) {
}
@UiHandler(value = { "label_1" })
void onDragStart(DragStartEvent event) {
Element element = label_1.getElement();
event.getDataTransfer().setDragImage(element, 0, 0);
}
@UiHandler(value = { "label" })
void onDragStart2(DragStartEvent event) {
Element element = label.getElement();
event.getDataTransfer().setDragImage(element, 10, 10);
}
@UiHandler(value = { "label", "label_1" })
void onLabelDrag(DragEvent event) {
}
@UiHandler(value = { "label", "label_1" })
void onLabel_1Drop(DropEvent event) {
Window.alert("bhibhop");
}
}
그리고 XML 파일 :
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:g="urn:import:com.google.gwt.user.client.ui">
<ui:style>
.label{
height: 100px;
width: 200px;
margin: 20px;
background-color: lightblue;
}
</ui:style>
<g:HTMLPanel height="500px" width="500px">
<g:Label ui:field="label_1" styleName="{style.label}"/>
<g:Label ui:field="label" styleName="{style.label}"/>
</g:HTMLPanel>
</ui:UiBinder>
감사합니다. FireFox의 트릭입니다. :) 그러나 IE 9.0은 여전히 실패합니다 .... IE를 작동 시키려면 다른 아이디어가 있습니까? – Stefan
잘이 IE 10 미리보기 버전에서 작동합니다. IE 9는 그것을 지원하지 않는 것 같습니다 ... 당신이나 다른 누군가가 그걸 확인할 수 있다면 Wourld는 좋을 것입니다 .. – Stefan
IE 10 플랫폼 미리보기 모드도 작동합니다. – Stefan