⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dndexample.java

📁 SWT开发例子
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
	b = new Button(parent, SWT.CHECK);	b.setText("File Transfer");	b.addSelectionListener(new SelectionAdapter() {		public void widgetSelected(SelectionEvent e) {			Button b = (Button)e.widget;			if (b.getSelection()) {				addDropTransfer(FileTransfer.getInstance());						} else {				removeDropTransfer(FileTransfer.getInstance());			}		}	});}private void createDropWidget(Composite parent) {	parent.setLayout(new FormLayout());	Combo combo = new Combo(parent, SWT.READ_ONLY);	combo.setItems(new String[] {"Toggle Button", "Radio Button", "Checkbox", "Canvas", "Label", "List", "Table", "Tree", "Text"});	combo.select(LABEL);	dropControlType = combo.getSelectionIndex();	dropControl = createWidget(dropControlType, parent, "Drop Target");	combo.addSelectionListener(new SelectionAdapter() {		public void widgetSelected(SelectionEvent e) {			Object data = dropControl.getLayoutData();			Composite parent = dropControl.getParent();			dropControl.dispose();			Combo c = (Combo)e.widget;			dropControlType = c.getSelectionIndex(); 			dropControl = createWidget(dropControlType, parent, "Drop Target");			dropControl.setLayoutData(data);			if (dropEnabled) createDropTarget();			parent.layout();		}	});		Button b = new Button(parent, SWT.CHECK);	b.setText("DropTarget");	b.addSelectionListener(new SelectionAdapter() {		public void widgetSelected(SelectionEvent e) {			Button b = (Button)e.widget;			dropEnabled = b.getSelection();			if (dropEnabled) {				createDropTarget();			} else {				if (dropTarget != null){					dropTarget.dispose();				}				dropTarget = null;			}		}	});		FormData data = new FormData();	data.top = new FormAttachment(0, 10);	data.bottom = new FormAttachment(combo, -10);	data.left = new FormAttachment(0, 10);	data.right = new FormAttachment(100, -10);	dropControl.setLayoutData(data);		data = new FormData();	data.bottom = new FormAttachment(b, -10);	data.left = new FormAttachment(0, 10);	combo.setLayoutData(data);		data = new FormData();	data.bottom = new FormAttachment(100, -10);	data.left = new FormAttachment(0, 10);	b.setLayoutData(data);	}private Control createWidget(int type, Composite parent, String prefix){	switch (type) {		case BUTTON_CHECK: {			Button button = new Button(parent, SWT.CHECK);			button.setText(prefix+" Check box");			return button;		}		case BUTTON_TOGGLE: {			Button button = new Button(parent, SWT.TOGGLE);			button.setText(prefix+" Toggle button");			return button;		}		case BUTTON_RADIO: {			Button button = new Button(parent, SWT.RADIO);			button.setText(prefix+" Radio button");			return button;		}		case TABLE: {			Table table = new Table(parent, SWT.BORDER | SWT.MULTI);			TableColumn column1 = new TableColumn(table, SWT.NONE);			TableColumn column2 = new TableColumn(table, SWT.NONE);			for (int i = 0; i < 10; i++) {				TableItem item = new TableItem(table, SWT.NONE);				item.setText(0, prefix+" name " + i);				item.setText(1, prefix+" value " + i);			}			column1.pack();			column2.pack();			return table;		}		case TEXT: {			Text text = new Text(parent, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL);			text.setText(prefix+" Text");			return text;		}		case TREE: {			Tree tree = new Tree(parent, SWT.BORDER);			for (int i = 0; i < 3; i++) {				TreeItem item = new TreeItem(tree, SWT.NONE);				item.setText(prefix+" item " + i);				for (int j = 0; j < 3; j++) {					TreeItem subItem = new TreeItem(item, SWT.NONE);					subItem.setText(prefix+" item " + j);					for (int k = 0; k < 3; k++) {						TreeItem subsubItem = new TreeItem(subItem, SWT.NONE);						subsubItem.setText(prefix+" item " + k);					}				}			}			return tree;		}		case CANVAS: {			Canvas canvas = new Canvas(parent, SWT.BORDER);			canvas.setData("STRINGS", new String[] {prefix+" Canvas widget"});			canvas.addPaintListener(new PaintListener() {				public void paintControl(PaintEvent e) {					Canvas c = (Canvas)e.widget;					Image image = (Image)c.getData("IMAGE");					if (image != null) {						e.gc.drawImage(image, 5, 5);					} else {						String[] strings = (String[])c.getData("STRINGS");						if (strings != null) {							FontMetrics metrics = e.gc.getFontMetrics();							int height = metrics.getHeight();							int y = 5;							for(int i = 0; i < strings.length; i++) {								e.gc.drawString(strings[i], 5, y);								y += height + 5;							}						}					}				}			});			return canvas;		}		case LABEL: {			Label label = new Label(parent, SWT.BORDER);			label.setText(prefix+" Label");			return label;		}		case LIST: {			List list = new List(parent, SWT.BORDER);			list.setItems(new String[] {prefix+" Item a", prefix+" Item b",  prefix+" Item c",  prefix+" Item d"});			return list;		}		default:			throw new SWTError(SWT.ERROR_NOT_IMPLEMENTED);	}}private void open() {	Display display = new Display();	Shell shell = new Shell(display);	shell.setText("Drag and Drop Example");	shell.setLayout(new FormLayout());		Label dragLabel = new Label(shell, SWT.LEFT);	dragLabel.setText("Drag Source:");		Group dragWidgetGroup = new Group(shell, SWT.NONE);	dragWidgetGroup.setText("Widget");	createDragWidget(dragWidgetGroup);		Group dragOperationsGroup = new Group(shell, SWT.NONE);	dragOperationsGroup.setText("Allowed Operation(s):");	createDragOperations(dragOperationsGroup);		Group dragTypesGroup = new Group(shell, SWT.NONE);	dragTypesGroup.setText("Transfer Type(s):");	createDragTypes(dragTypesGroup);		dragConsole = new Text(shell, SWT.READ_ONLY | SWT.BORDER |SWT.V_SCROLL | SWT.H_SCROLL | SWT.MULTI);	Menu menu = new Menu (shell, SWT.POP_UP);	MenuItem item = new MenuItem (menu, SWT.PUSH);	item.setText ("Clear");	item.addSelectionListener(new SelectionAdapter() {		public void widgetSelected(SelectionEvent e) {			dragConsole.setText("");		}	});	item = new MenuItem (menu, SWT.CHECK);	item.setText ("Show Event detail");	item.addSelectionListener(new SelectionAdapter() {		public void widgetSelected(SelectionEvent e) {			MenuItem item = (MenuItem)e.widget;			dragEventDetail = item.getSelection();		}	});	dragConsole.setMenu(menu);		Label dropLabel = new Label(shell, SWT.LEFT);	dropLabel.setText("Drop Target:");		Group dropWidgetGroup = new Group(shell, SWT.NONE);	dropWidgetGroup.setText("Widget");	createDropWidget(dropWidgetGroup);		Group dropOperationsGroup = new Group(shell, SWT.NONE);	dropOperationsGroup.setText("Allowed Operation(s):");	createDropOperations(dropOperationsGroup);		Group dropTypesGroup = new Group(shell, SWT.NONE);	dropTypesGroup.setText("Transfer Type(s):");	createDropTypes(dropTypesGroup);		dropConsole = new Text(shell, SWT.READ_ONLY | SWT.BORDER |SWT.V_SCROLL | SWT.H_SCROLL | SWT.MULTI);	menu = new Menu (shell, SWT.POP_UP);	item = new MenuItem (menu, SWT.PUSH);	item.setText ("Clear");	item.addSelectionListener(new SelectionAdapter() {		public void widgetSelected(SelectionEvent e) {			dropConsole.setText("");		}	});	item = new MenuItem (menu, SWT.CHECK);	item.setText ("Show Event detail");	item.addSelectionListener(new SelectionAdapter() {		public void widgetSelected(SelectionEvent e) {			MenuItem item = (MenuItem)e.widget;			dropEventDetail = item.getSelection();		}	});	dropConsole.setMenu(menu);		int height = 300;	FormData data = new FormData();	data.top = new FormAttachment(0, 10);	data.left = new FormAttachment(0, 10);	dragLabel.setLayoutData(data);		data = new FormData();	data.top = new FormAttachment(dragLabel, 10);	data.left = new FormAttachment(0, 10);	data.right = new FormAttachment(50, -10);	data.height = height;	dragWidgetGroup.setLayoutData(data);		data = new FormData();	data.top = new FormAttachment(dragWidgetGroup, 10);	data.left = new FormAttachment(0, 10);	data.right = new FormAttachment(50, -10);	//data.bottom = new FormAttachment(dropTypesGroup, -10);	dragOperationsGroup.setLayoutData(data);		data = new FormData();	data.top = new FormAttachment(dragOperationsGroup, 10);	data.left = new FormAttachment(0, 10);	data.right = new FormAttachment(50, -10);	dragTypesGroup.setLayoutData(data);		data = new FormData();	data.top = new FormAttachment(dragTypesGroup, 10);	data.bottom = new FormAttachment(100, -10);	data.left = new FormAttachment(0, 10);	data.right = new FormAttachment(50, -10);	dragConsole.setLayoutData(data);		data = new FormData();	data.top = new FormAttachment(0, 10);	data.left = new FormAttachment(dragTypesGroup, 10);	dropLabel.setLayoutData(data);		data = new FormData();	data.top = new FormAttachment(dropLabel, 10);	data.left = new FormAttachment(dragTypesGroup, 10);	data.right = new FormAttachment(100, -10);	data.height = height;	dropWidgetGroup.setLayoutData(data);		data = new FormData();	data.top = new FormAttachment(dropWidgetGroup, 10);	data.left = new FormAttachment(dragTypesGroup, 10);	data.right = new FormAttachment(100, -10);	dropOperationsGroup.setLayoutData(data);		data = new FormData();	data.top = new FormAttachment(dropOperationsGroup, 10);	data.left = new FormAttachment(dragTypesGroup, 10);	data.right = new FormAttachment(100, -10);	//data.bottom = new FormAttachment(dragConsole, -10);	dropTypesGroup.setLayoutData(data);		data = new FormData();	data.top = new FormAttachment(dropTypesGroup, 10);	data.bottom = new FormAttachment(100, -10);	data.left = new FormAttachment(50, 10);	data.right = new FormAttachment(100, -10);	dropConsole.setLayoutData(data);			shell.setSize(1000, 900);	shell.open();			while (!shell.isDisposed()) {		if (!display.readAndDispatch())			display.sleep();	}	}private void printEvent(DragSourceEvent e) {	if (!dragEventDetail) return;	StringBuffer sb = new StringBuffer();	sb.append("widget: "); sb.append(e.widget);	sb.append(", time: "); sb.append(e.time);	sb.append(", operation: "); sb.append(e.detail);	sb.append(", type: "); sb.append(e.dataType != null ? e.dataType.type : 0);	sb.append(", doit: "); sb.append(e.doit);	sb.append(", data: "); sb.append(e.data);	sb.append("\n");	dragConsole.append(sb.toString());}private void printEvent(DropTargetEvent e) {	if (!dropEventDetail) return;	StringBuffer sb = new StringBuffer();	sb.append("widget; "); sb.append(e.widget);	sb.append(", time: "); sb.append(e.time);	sb.append(", x: "); sb.append(e.x);	sb.append(", y: "); sb.append(e.y);	sb.append(", item: "); sb.append(e.item);	sb.append(", operations: "); sb.append(e.operations);	sb.append(", operation: "); sb.append(e.detail);	sb.append(", feedback: "); sb.append(e.feedback);	if (e.dataTypes != null) {		for (int i = 0; i < e.dataTypes.length; i++) {			sb.append(", dataType "); sb.append(i); sb.append(": "); sb.append(e.dataTypes[i].type);		}	} else {		sb.append(", dataTypes: none");	}	sb.append(", currentDataType: "); sb.append(e.currentDataType);	sb.append(", data: "); sb.append(e.data);	sb.append("\n");	dropConsole.append(sb.toString());}private void removeDragTransfer(Transfer transfer){	if (dragTypes.length == 1) {		dragTypes = new Transfer[0];	} else {		int index = -1;		for(int i = 0; i < dragTypes.length; i++) {			if (dragTypes[i] == transfer) {				index = i;				break;			}		}		if (index == -1) return;		Transfer[] newTypes = new Transfer[dragTypes.length - 1];		System.arraycopy(dragTypes, 0, newTypes, 0, index);		System.arraycopy(dragTypes, index + 1, newTypes, index, dragTypes.length - index - 1);		dragTypes = newTypes;	}	if (dragSource != null) {		dragSource.setTransfer(dragTypes);	}}private void removeDropTransfer(Transfer transfer){	if (dropTypes.length == 1) {		dropTypes = new Transfer[0];	} else {		int index = -1;		for(int i = 0; i < dropTypes.length; i++) {			if (dropTypes[i] == transfer) {				index = i;				break;			}		}		if (index == -1) return;		Transfer[] newTypes = new Transfer[dropTypes.length - 1];		System.arraycopy(dropTypes, 0, newTypes, 0, index);		System.arraycopy(dropTypes, index + 1, newTypes, index, dropTypes.length - index - 1);		dropTypes = newTypes;	}	if (dropTarget != null) {		dropTarget.setTransfer(dropTypes);	}}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -