关于JAVA代码 求教达人

public static ChangeGroup getNewRectangleChangeGroup(
Session session, Point topLeft, Point bottomRight)
{
SessionViewer sessionViewer=session.getSessionViewer();
EntityID userInfo=sessionViewer.getUserInfo();
Point offset=sessionViewer.getOffset();
int zoomLevel=sessionViewer.getZoomLevel();
Pen pen=sessionViewer.getActivePen();
Brush brush=sessionViewer.getActiveBrush();
ChangeGroup createDrawable=new ChangeGroup(userInfo);
EntityID drawable=new EntityID(session.getSessionClient().getClientID());
createDrawable.add(new Rectangle.Change(Rectangle.Change.CREATE,null,
new EntityID[] {drawable}));
createDrawable.add(new Rectangle.Change(Rectangle.Change.MOVE,
new Object[] {Drawable.absolutePoint (offset, zoomLevel, topLeft.x, topLeft.y)},
new EntityID[] {drawable}));
createDrawable.add(new Rectangle.Change(Rectangle.Change.RESIZE,
new Object[] {new Integer(2),new Point((bottomRight.x-topLeft.x)*zoomLevel,
(bottomRight.y-topLeft.y)*zoomLevel),new Boolean(true)},new EntityID[] {drawable}));
addBrushAndPenToChangeGroup(createDrawable, brush, pen);
return createDrawable;
}
此方法可以理解为:当前用户ID存放到drawable EntityID[]全局标识数组中,矩形操作添加到createDrawable,Object[]数组存放当前的点位置数据?

实际上这个方法里面注册了三个动作,Rectangle.Change.CREATE、Rectangle.Change.MOVE,Rectangle.Change.RESIZE,以实现一个矩形框(或者说是重画)的创建、移动、设定大小(放大缩小)

SessionViewer sessionViewer=session.getSessionViewer();
EntityID userInfo=sessionViewer.getUserInfo(); //获取用户信息,一个session能在网络上标识一个用户

Point offset=sessionViewer.getOffset(); // 获得点阵偏移量
int zoomLevel=sessionViewer.getZoomLevel(); // 缩放比例

Pen pen=sessionViewer.getActivePen(); // 画笔,实现绘制图形
Brush brush=sessionViewer.getActiveBrush(); // 格式刷,实现页面更新

ChangeGroup createDrawable=new ChangeGroup(userInfo);
EntityID drawable=new EntityID(session.getSessionClient().getClientID());
createDrawable.add(new Rectangle.Change(Rectangle.Change.CREATE,null,
new EntityID[] {drawable}));
createDrawable.add(new Rectangle.Change(Rectangle.Change.MOVE,
new Object[] {Drawable.absolutePoint (offset, zoomLevel, topLeft.x, topLeft.y)},
new EntityID[] {drawable}));
createDrawable.add(new Rectangle.Change(Rectangle.Change.RESIZE,
new Object[] {new Integer(2),new Point((bottomRight.x-topLeft.x)*zoomLevel,
(bottomRight.y-topLeft.y)*zoomLevel),new Boolean(true)},new EntityID[] {drawable}));
addBrushAndPenToChangeGroup(createDrawable, brush, pen);
以上就是使用new Rectangle.Change()向系统注册三个Change事件,new Object[] 进行指定点阵数据,也就是图形的x、y坐标(起始点),长、宽、缩放比例等。
为什么这里是用Object而不是具体的数据类型呢?那是因为任何的数据类型都是从Object这里继承而来的,也就是说Object是超级类,当不知道类型或数据类型不唯一时,我们使用Object来进行限定,在使用数据的时候使用具体的类型进行数据显示转换就可以了。这是在面向对象的编程上常用的方法。
温馨提示:答案为网友推荐,仅供参考
相似回答