读书人

让连线下的Label动起来吧

发布时间: 2012-10-26 10:30:59 作者: rapoo

让连线上的Label动起来吧
大家都知道GEF中连线上的label默认是在线的中间,一旦要连很多线的时候显示label就是棘手的问题了,所以啊就要求可以移动label避免重叠啊
三个步骤
第一步:写个类继承MidpointLocator

conditionLabel.addMouseListener(new MouseListener(){public void mouseDoubleClicked(MouseEvent me){}public void mousePressed(MouseEvent me){anchorX = me.x;anchorY = me.y;me.consume();}public void mouseReleased(MouseEvent me){me.consume();}});conditionLabel.addMouseMotionListener(new MouseMotionListener(){public void mouseDragged(MouseEvent me){dx += me.x - anchorX;dy += me.y - anchorY;anchorX = me.x;anchorY = me.y;Object constraint = connection.getLayoutManager().getConstraint(conditionLabel);if(constraint instanceof MidpointOffsetLocator){((MidpointOffsetLocator) constraint).setOffset(new Point(dx,dy));conditionLabel.revalidate();}me.consume();}@Overridepublic void mouseEntered(MouseEvent me) {// TODO Auto-generated method stub}@Overridepublic void mouseExited(MouseEvent me) {// TODO Auto-generated method stub}@Overridepublic void mouseHover(MouseEvent me) {// TODO Auto-generated method stub}@Overridepublic void mouseMoved(MouseEvent me) {// TODO Auto-generated method stub}});

经过上面三个步骤就大功告成了

读书人网 >软件架构设计

热点推荐