源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

SWT JFace 拖曳效果

  • 时间:2020-03-27 05:10 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:SWT JFace 拖曳效果
演示代码如下:
[u]复制代码[/u] 代码如下:
package swt_jface.demo11; import org.eclipse.swt.SWT; import org.eclipse.swt.dnd.DND; import org.eclipse.swt.dnd.DragSource; import org.eclipse.swt.dnd.DragSourceEvent; import org.eclipse.swt.dnd.DragSourceListener; import org.eclipse.swt.dnd.DropTarget; import org.eclipse.swt.dnd.DropTargetEvent; import org.eclipse.swt.dnd.DropTargetListener; import org.eclipse.swt.dnd.TextTransfer; import org.eclipse.swt.dnd.Transfer; import org.eclipse.swt.events.DisposeEvent; import org.eclipse.swt.events.DisposeListener; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.MessageBox; import org.eclipse.swt.widgets.Shell; public class WordJumbles {     Display display = new Display();     Shell shell = new Shell(display);     String word;     Label[] labelsRowOne;     Label[] labelsRowTwo;     Font font = new Font(display, "Arial", 18, SWT.BOLD);     public void setDragSource(final Label label) {         int operations = DND.DROP_MOVE;         final DragSource dragSource = new DragSource(label, operations);         Transfer[] formats = new Transfer[] { TextTransfer.getInstance()};         dragSource.setTransfer(formats);         dragSource.addDragListener(new DragSourceListener() {             public void dragStart(DragSourceEvent event) {                 if (label.getText().length() == 0)                     event.doit = false;             }             public void dragSetData(DragSourceEvent event) {                 if (TextTransfer.getInstance().isSupportedType(event.dataType))                     event.data = label.getText();             }             public void dragFinished(DragSourceEvent event) {                 if (event.doit == true || event.detail == DND.DROP_MOVE) {                     label.setText("");                 }             }         });         label.addDisposeListener(new DisposeListener() {             public void widgetDisposed(DisposeEvent e) {                 dragSource.dispose();             }         });     }     public void setDropTarget(final Label label) {         int operations = DND.DROP_MOVE;         final DropTarget dropTarget = new DropTarget(label, operations);         Transfer[] formats = new Transfer[] { TextTransfer.getInstance()};         dropTarget.setTransfer(formats);         dropTarget.addDropListener(new DropTargetListener() {             public void dragEnter(DropTargetEvent event) {                 if(label.getText().length() != 0)                     event.detail = DND.DROP_NONE;             }             public void dragLeave(DropTargetEvent event) {             }             public void dragOperationChanged(DropTargetEvent event) {             }             public void dragOver(DropTargetEvent event) {             }             public void drop(DropTargetEvent event) {                 if (TextTransfer                     .getInstance()                     .isSupportedType(event.currentDataType)) {                     String text = (String) event.data;                     label.setText(text);                     check();                 }             }             public void dropAccept(DropTargetEvent event) {             }         });         label.addDisposeListener(new DisposeListener() {             public void widgetDisposed(DisposeEvent e) {                 dropTarget.dispose();             }         });     }     private void check() {         for(int i=0; i<word.length(); i++) {             if(! labelsRowTwo[i].getText().equals(word.charAt(i) + ""))                 return;         }         MessageBox messageBox = new MessageBox(shell);         messageBox.setMessage("Success!");         messageBox.open();     }     public WordJumbles(String word) {         this.word = word;         shell.setText("Word Jumbles");         labelsRowOne = new Label[word.length()];         labelsRowTwo = new Label[word.length()];         int width = 40;         int[] randomPermutation = { 5, 2, 6, 3, 1, 4, 0 };         for (int i = 0; i < word.length(); i++) {             final Label labelRowOne = new Label(shell, SWT.BORDER);             labelsRowOne[i] = labelRowOne;             labelRowOne.setBounds(10 + width * i, 10, width - 5, width - 5);             labelRowOne.setFont(font);             labelRowOne.setText(word.charAt(randomPermutation[i]) + "");             labelRowOne.setAlignment(SWT.CENTER);             setDragSource(labelRowOne);             setDropTarget(labelRowOne);             final Label labelRowTwo = new Label(shell, SWT.BORDER);             labelsRowTwo[i] = labelRowTwo;             labelRowTwo.setBounds(                 10 + width * i,                 20 + width,                 width - 5,                 width - 5);             labelRowTwo.setBackground(display.getSystemColor(SWT.COLOR_WHITE));             labelRowTwo.setFont(font);             labelRowTwo.setAlignment(SWT.CENTER);             setDragSource(labelRowTwo);             setDropTarget(labelRowTwo);         }         shell.pack();         shell.open();         while (!shell.isDisposed()) {             if (!display.readAndDispatch()) {                 display.sleep();             }         }         display.dispose();     }     public static void main(String[] args) {         new WordJumbles("ECLIPSE");     } }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部