`

图形拖动例子

 
阅读更多

图形拖动例子

 

import org.eclipse.draw2d.ColorConstants;
import org.eclipse.draw2d.Figure;
import org.eclipse.draw2d.IFigure;
import org.eclipse.draw2d.LightweightSystem;
import org.eclipse.draw2d.MouseEvent;
import org.eclipse.draw2d.MouseListener;
import org.eclipse.draw2d.MouseMotionListener;
import org.eclipse.draw2d.Panel;
import org.eclipse.draw2d.RectangleFigure;
import org.eclipse.draw2d.XYLayout;
import org.eclipse.draw2d.geometry.Dimension;
import org.eclipse.draw2d.geometry.Point;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

public class Dnd1 {
	IFigure getRootFigure() {
		Panel panel = new Panel();
		panel.setLayoutManager(new XYLayout());
		RectangleFigure rFigure = new RectangleFigure();
		rFigure.setSize(55,55);
		rFigure.setBackgroundColor(ColorConstants.green);
		new Dnd(rFigure);
		panel.add(rFigure);
		return panel;
	}

	public static void main(String args[]) {
		Display display = Display.getDefault();
		Shell shell = new Shell();  
		shell.setSize(400, 300);
		shell.open();
		shell.setText("drag and drop example");
		LightweightSystem lws = new LightweightSystem(shell);
		lws.setContents(new Dnd1().getRootFigure());
		while (!shell.isDisposed ()) {
			if (!display.readAndDispatch ())
				display.sleep ();
		}
	}
}

class Dnd extends MouseMotionListener.Stub implements MouseListener {
	Point start;
	public Dnd(IFigure figure) 	{
		figure.addMouseMotionListener(this);
		figure.addMouseListener(this);
	}
	public void mouseReleased(MouseEvent e){
		Figure f = ((Figure)e.getSource());
		f.setCursor(null);
	}
	public void mouseClicked(MouseEvent e){}
	public void mouseDoubleClicked(MouseEvent e){}
	public void mousePressed(MouseEvent e) {
		Figure f = ((Figure)e.getSource());
		f.setCursor(Display.getCurrent().getSystemCursor(SWT.CURSOR_SIZEALL));
		start = e.getLocation();
	}
	public void mouseDragged(MouseEvent e) {
		if(start == null) {
			return;
		}
		Point p = e.getLocation();
		Dimension d = p.getDifference(start);
		start = p;
		Figure f = ((Figure)e.getSource());
		f.setBounds(f.getBounds().getTranslated(d.width, d.height));
	}
	
}

 

分享到:
评论

相关推荐

    基于HTML5与EXTJS4实现的最基本的多图形拖动例子

    基于HTML5与EXTJS4实现的最基本的多图形拖动例子,运用了面向对象思想,画出来的图形是UML图,父类是UmlShape,子类是SubUmlShape,可作为学习HTML5画图的参考例子,至于extjs的包,自己上官网下,然后把HTML文件里的...

    JS 拖拽例子

    这个“JS 拖拽例子”是一个教学实例,旨在展示如何在网页上实现拖放操作。下面我们将详细讨论拖放的基本原理和实现步骤。 首先,拖放功能涉及到两个主要事件:`dragstart` 和 `drop`。当用户开始拖动一个元素时,会...

    pyqt5:Qpainter绘制基础图形,鼠标拖动

    在PyQt5中,QPainter是一个非常重要的模块,它提供了丰富的绘图功能,可以用于在窗口、图片、...这个例子只是一个起点,实际的PyQt5应用可以根据需求进行扩展,比如添加更多的图形类型、支持图形旋转缩放等高级功能。

    jfreechart图形报表例子,还有几个其他的上传例子

    在"jfreechart图形报表例子"中,你将找到一系列示例代码,帮助你理解和学习如何使用JFreeChart来生成这些图表。 首先,JFreeChart的基本用法包括创建图表对象,定义数据源,设置图表类型和样式,以及最后的渲染和...

    JTree的例子,可以拖动节点

    这个例子展示了如何实现一个可拖动节点的`JTree`,这在用户界面设计中是一个常见且实用的功能,特别是在需要展示层次结构信息时。`JTree`允许用户通过拖放操作来重新排列节点,提高交互性和用户体验。 拖放(Drag ...

    vc6中使用gdi+绘制2维图形的例子源码

    本例子源码通过面向对象的设计方法,将绘图元素封装,使得代码更加模块化和易于维护。 首先,我们需要了解GDI+的基本概念。GDI+的核心是Graphics类,它是所有绘图操作的基础。你可以通过创建Graphics对象并传入设备...

    matlab百例子 图形应用篇

    5. **图形交互**:MATLAB图形可以实现交互式操作,如拖动坐标轴改变数据视图,使用`ginput`获取用户点击的图形位置,`zoom`和`pan`提供缩放和平移功能。 6. **子图布局**:`subplot`函数用于创建多图布局,便于对比...

    C++计算机图形学,交互式绘图例子

    在这个"交互式绘图例子"中,我们可能涉及了如何使用这些库进行图形绘制,并且结合了"对话框"和"橡皮筋"的概念,这两个概念在2D图形界面设计中非常常见。 "对话框"在用户界面设计中是一个临时的窗口,通常用来获取...

    objectArx自定义拖动类简单例子

    自定义拖动类通常涉及到对图形实体的选中、移动和更新等操作的控制,使用户能够按照特定的逻辑或规则来拖动实体。这样的类可以用来实现特殊的行为,比如限制移动范围、执行特定的计算等。 接下来,我们将探讨如何...

    JAVA3D交互式三维图形编程讲解和例子源码.rar

    这个压缩包文件"JAVA3D交互式三维图形编程讲解和例子源码.rar"包含了关于如何使用Java3D进行编程的详细教程和实例源代码,非常适合初学者和希望深化Java3D技能的开发者。 首先,让我们来深入了解一下Java3D的核心...

    自定义图形支持库

    5. **事件处理**:图形库往往与用户交互密切相关,可以捕捉点击、拖拽等事件,实现动态图形操作。 6. **性能优化**:为了在不同的设备和平台上流畅运行,自定义图形库通常会进行硬件加速,利用GPU进行图形渲染,...

    VB6.0拖动图片的例子.rar

    这个例子就是关于如何实现一个功能,让用户可以拖动图片到界面内的任意位置。VB6.0提供了强大的事件驱动编程模型,使得这种交互变得简单。 首先,我们需要了解VB6中的控件和事件。在这个例子中,图片可能是由...

    JQueryUI拖拽效果

    在拖拽过程中,jQueryUI触发了一系列的事件,如`dragstart`、`drag`、`dragstop`等,开发者可以通过监听这些事件来实现自定义行为,比如在拖动开始时显示提示信息,在拖动结束时保存新的位置。 7. **主题支持** ...

    C#GDI图形图像截图例子

    总的来说,通过C#和GDI+,我们可以实现一个功能丰富的截图工具,虽然这个例子可能只实现了基本的截图功能,但通过对各个部分的扩展和优化,可以创建出更加完善的截图应用。在实际开发中,你还可以考虑增加性能优化,...

    图片拖拽例子

    在计算机编程领域,图片拖拽功能是用户界面中常见的交互方式,它允许用户通过鼠标操作移动图片或...这个过程不仅涉及到事件处理,还涉及到了图形界面的更新和坐标系统的理解。在实际编程中,这些知识点都是不可或缺的。

    flex3一个简单购物车拖拽的例子

    在Flex3中,你可以创建具有丰富用户界面和交互功能的应用程序,而“flex3一个简单购物车拖拽的例子”是一个演示如何在Flex环境中实现拖放功能的实例。这个例子展示了如何将商品图标或项拖入数据网格(DataGrid)中,...

    拖拽拷贝的例子

    这项技术广泛应用于文件管理、多媒体编辑、软件开发等多个场景,尤其是在图形用户界面(GUI)的设计中。本篇文章将深入探讨拖拽拷贝的概念、实现原理以及在不同环境下的应用。 拖拽拷贝的基本原理是通过鼠标或触控...

    图形图像制作实例 图形变形

    本实例将聚焦于“可任意拖动竖线曲线改变图形形状”的方法,这是一种利用贝塞尔曲线(Bezier Splines)进行图形变形的高级技巧。 贝塞尔曲线是计算机图形学中的基本工具,它提供了对曲线形状的精细控制。贝塞尔曲线...

    GEF入门学习例子

    这个入门学习例子旨在帮助初学者理解GEF的基本用法和核心概念,通过实例展示如何利用GEF实现工具栏、菜单栏、属性栏以及图形的交互功能,如移动、删除、撤销、连线等,并涵盖了大纲视图和鹰眼功能的实现。...

    一个关于拖拽(Drag)的例子

    在这个例子中,我们将深入探讨拖拽功能的基本原理、实现方式以及它在不同应用场景中的价值。 1. 拖拽(Drag)的基本概念: 拖拽操作通常包括三个主要阶段:按下、拖动和释放。用户首先点击并保持鼠标按钮(或触摸...

Global site tag (gtag.js) - Google Analytics