以下代码实现监听鼠标事件,按下鼠标拖动时绘制自定义线条
参考资料: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");
}
}