IFigure

首先在这里说几个东西:1.Layer层无边界的。 2.Pane窗格有边界的容器。

IFigure在draw2d中的位置,已经draw2d这套架构的机制咱不在这里详述。记得第一次接触这个,找到最多的就是draw2d的机制的文章。当然IFigure的文章也多,但是为了更好的学习Figure,还是写一篇这样的文章,部分内容来自网上。

IFigure:这个接口里面定义了很多东西,但是主要分为四个部分:1.维护父子关系。2.添加事件监听器。3.画界面的方法。4.管理界面的方法。这里只是列举一些觉得有用的跟界面相关的方法,其他的用的时候再分析。

add(IFigure figure, Object constraint):在IFigure中有四个添加子的重载方法,其中这一个传入的第二个参数是object对象。这里所说的constraint(约束)主要是跟布局息息相关的,它可以是形状,也可以是特点布局管理器中指定的参数。

boolean containsPoint(Point p):判断点是否在当前区域内。

void erase():一个擦除当前IFigure的方法,重画前常调用。

findFigureAt(Point p):找当前点下的IFigure,有3个重载方法,可以选择遍历方式。findFigureAtExcluding与之相反。

getMaximumSize,getMinimumSize,getPreferredSize:等都是布局管理器中常用到的方法。

void paint(Graphics graphics):这个方法是IFigure 提供的GC接口,用这个方法画当前IFigure 的形状,很嗨皮的这方法。

repaint():重绘。

IFigure下的子接口:

Connection:这是一个线的基础接口,主要做三件事:1.获取源和目标的锚点。2.存储PointList线上的点。3.设定路由方式。

FreeformFigure:所有实现此接口的figure都具备向四周延伸的能力,但是此种figure必须放在FreeformViewport类似容器里面。

IImageFigure:一个有图片的figure

IScrollableFigure:一个带有ScrollPane的figure,从效果上来说,此figure拥有一个属于自己的侧滑条。

Orientable:简单接口,描述HORIZONTAL和VERTICAL相关

RotatableDecoration:此接口提供两个方法:1.setLocation设置旋转的点 2.setReferencePoint设置旋转的角度

ScalableFigure:一个提供可缩放功能的接口,gef编辑器中实现的ZoomManeger功能还不错。

IFigure的实现类:

Figure:几乎每一个Figure里面都有一个Helper,牛叉的是Figure的Helper叫这个AncestorHelper注定牛叉,Helper主要是对事件的管理。

erase():这个方法是擦除当前Figure,擦除自己的同时必须重画父容器,因为父有可能改变。

repaint(Rectangle rect):重画方法会调用UpdateManager对象的addDirtyRegion方法类似一个注册为脏的意思。

另外看看figure的paint方法:画图其实就是一个基本功,这里其实人家给出了一个很清晰的画图的思路。

Java代码 收藏代码

public void paint(Graphics graphics) {  
        if (getLocalBackgroundColor() != null)  
            graphics.setBackgroundColor(getLocalBackgroundColor());  
        if (getLocalForegroundColor() != null)  
            graphics.setForegroundColor(getLocalForegroundColor());  
        if (font != null)  
            graphics.setFont(font);  
  
        graphics.pushState();  
        try {  
            paintFigure(graphics);  
            graphics.restoreState();  
            paintClientArea(graphics);  
            paintBorder(graphics);  
        } finally {  
            graphics.popState();  
        }  
    }  

DrawerFigure:gef中的palette面板上的分组的那个Figure,点击能够像抽屉一样动的Figure。

FlowFigure:FlowFigure和它的子,都是用于描述文本的Figure。

Shape:Shape和它的子是用于描述图形的,它默认提供了几个基本的图形,RectangleFigure(矩形)和Ellipse(椭圆),RoundedRectangle(圆角矩形),PolylineShape(折线),PolygonShape(多边形),Polyline(线)。

如果对默认提供的Figure用起来不满意,可以使用GC画:

一般我们的Figure都是继承Figure或者它的孩子,所以我们优先可以考虑覆盖paintFigure,paintClientArea

,paintBorder这些方法。

工具方法:

FigureUtilities:这个工具类,可以转换颜色,转换一个高亮的和一个暗的。还可以获取文本的宽度。制造阴影的方法:makeGhostShape()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值