MouseMotionListener,MouseListener简单使用

以下代码实现监听鼠标事件,按下鼠标拖动时绘制自定义线条

参考资料:https://blog.csdn.net/jueblog/article/details/9739627

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.PolylineConnection;
import org.eclipse.draw2d.XYLayout;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;


public class TestMouseMotion implements MouseMotionListener,MouseListener{
	protected Shell shell;
	protected Panel panel;
	
	protected Canvas canvas;
	
	PolylineConnection connection = null;

	public static void main(String[] args) {
		new TestMouseMotion().open();
	}
	
	private void open() {
		Display display = Display.getDefault();
		createContents();
		shell.open();
		shell.layout();
		while (!shell.isDisposed()) {
			if (!display.readAndDispatch()) {
				display.sleep();
			}
		}
	}
	
	private void createContents() {
		// TODO Auto-generated method stub
		shell = new Shell();
		shell.setSize(400, 400);
		shell.setText("test mouse listener");
		panel = new Panel();
		panel.setLayoutManager(new XYLayout());
		panel.addMouseListener(this);
		panel.addMouseMotionListener(this);
		LightweightSystem system = new LightweightSystem(shell);
		system.setContents(panel);
	}
	

	@Override
	public void mousePressed(MouseEvent me) {
		// TODO Auto-generated method stub
		System.out.println("mouse pressed");
		connection = new PolylineConnection();
		connection.setLineStyle(SWT.LINE_DOT);
		connection.removeAllPoints();
		connection.addPoint(me.getLocation());
		panel.add(connection);
	}

	@Override
	public void mouseReleased(MouseEvent me) {
		// TODO Auto-generated method stub
		System.out.println("mouse released");
		connection.setLineStyle(SWT.LINE_CUSTOM);
	}

	@Override
	public void mouseDoubleClicked(MouseEvent me) {
		// TODO Auto-generated method stub
		System.out.println("mouse double clicked");
	}

	@Override
	public void mouseDragged(MouseEvent me) {
		// TODO Auto-generated method stub
		System.out.println("mouse dragged:" + me.getLocation().toString());
		connection.addPoint(me.getLocation());
	}

	@Override
	public void mouseEntered(MouseEvent me) {
		// TODO Auto-generated method stub
		System.out.println("mouse entered");
	}

	@Override
	public void mouseExited(MouseEvent me) {
		// TODO Auto-generated method stub
		System.out.println("mouse exited");
	}

	@Override
	public void mouseHover(MouseEvent me) {
		// TODO Auto-generated method stub
		System.out.println("mouse hover");
	}

	@Override
	public void mouseMoved(MouseEvent me) {
		// TODO Auto-generated method stub
		System.out.println("mouse moved");
	}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值