前面的帖子里曾说过如何使用布局,当时主要集中在ToolbarLayout和FlowLayout(统称 OrderedLayout),还有很多应用程序使用的是可以自由拖动子图形的布局,在GEF里称为 XYLayout,而且这样的应用多半会需要在图形之间建立一些连接线,比如下图所示的情景。 连接的出现在一定程度上增加了模型的复杂度,连接线的刷新也是GEF关注的一个问题,这里 就主要讨论这类应用的实现,并将特别讨论一下展开/折叠(expand/collapse)功能的实现 。
图1 使用XYLayout的应用程序
还是从模型开始说起,使用XYLayout时,每个子图形对应的模型要维护自身的坐标和尺寸 信息,这就在模型里引入了一些与实际业务无关的成员变量。为了解决这个问题,一般我们 是让所有需要具有这些界面信息的模型元素继承自一个抽象类(如Node),而这个类里提供 如point、dimension等变量和getter/setter方法:
public class Node extends Element implements IPropertySource {
protected Point location = new Point(0, 0);//位置
protected Dimension size = new Dimension(100, 150);//尺寸
protected String name = "Node";//标签
protected List outputs = new ArrayList(5);//节点作为起点的连接
protected List inputs = new ArrayList(5);//节点作为终点的连接
…
}
时间: 2024-11-01 06:11:44