给图元去掉句柄,且选中时改变图元的边框颜色
用GEF实现过拖拽例子的朋友都应该知道拖拽用的是CustomXYLyoutEditPolicy实现的,改变图元大小也是它实现的,那么我们就在这里做文章了
首先重写CustomXYLayoutEditPolicy中的createChildEditPolicy方法,代码如下
@Overrideprotected List<MoveHandle> createSelectionHandles() {final List<MoveHandle> handle = new ArrayList<MoveHandle>();handle.add(new MoveHandle((GraphicalEditPart) getHost()) {protected void initialize() {super.initialize();setBorder(new LineBorder(1) {public void paint(IFigure figure, Graphics graphics,Insets insets) {tempRect.setBounds(getPaintRectangle(figure, insets));if (getWidth() % 2 == 1) {tempRect.width--;tempRect.height--;}tempRect.shrink(getWidth() / 2, getWidth() / 2);graphics.setLineWidth(getWidth());if (getColor() != null)graphics.setForegroundColor(getColor());// draw roundRectangle with red colorgraphics.setAntialias(SWT.ON);graphics.setForegroundColor(ColorConstants.red);graphics.drawRectangle(tempRect);}});// add resize handle//ResizableHandleKit.addHandle((GraphicalEditPart) getHost(),//handle, PositionConstants.EAST);//ResizableHandleKit.addHandle((GraphicalEditPart) getHost(),//handle, PositionConstants.SOUTH);//ResizableHandleKit.addHandle((GraphicalEditPart) getHost(),//handle, PositionConstants.WEST);//ResizableHandleKit.addHandle((GraphicalEditPart) getHost(),//handle, PositionConstants.NORTH);}});return handle;}带注释的那几行则是与句柄有关的,大家自己试试吧