手机
当前位置:查字典教程网 >编程开发 >Java >SWT JFace 拖曳效果
SWT JFace 拖曳效果
摘要:演示代码如下:复制代码代码如下:packageswt_jface.demo11;importorg.eclipse.swt.SWT;impo...

演示代码如下:

复制代码 代码如下:

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");

}

}

【SWT JFace 拖曳效果】相关文章:

谈谈 Java 中 this 的使用方法

基于Java实现缓存Cache的深入分析

Java加载资源文件时的路径问题的解决办法

Java硬币翻转倍数递增试算实例

SWT(JFace)体验之圆环状(戒指型)

JAVA hashCode使用方法详解

浅谈java中的访问修饰符

多线程计数,怎么保持计数准确的方法

java线程并发cyclicbarrier类使用示例

java中Filter过滤器处理中文乱码的方法

精品推荐
分类导航