Panel是负责任的大小和位置的全部元素。每一个面板创建本身的坐标系。一个面板的元件的绘制顺序表示创建这些元素的Z轴排序。
虽然只有一个面板,也有许多不一样类型的面板,每一个都有其本身的目的是如何安排的元素。当你创建一个面板,你一般会指定其Panel.type做为构造函数参数。这些都是存在的各类面板组成:javascript
Panel.Positionjava
Panel.Vertical函数
Panel.Horizontalcode
Panel.Auto对象
Panel.Spot排序
Panel.Tableip
Panel.Viewboxit
Panel.Linkio
Panel.Gridclass
最简单的一种面板是“Position”(Panel.Position)。每一个元素得到其正常大小,不管其默认大小或指定GraphObject.desiredSize (或等价的GraphObject.width和GraphObject.height)。
每一个元素的位置是由GraphObject.position属性指定。若是没有指定位置时,元件被定位在(0,0)。全部位置都是面板本身的坐标系中,而不是在文件范围的坐标系。位置可能包括负坐标。
面板的大小恰好足以容纳全部元素。若是你但愿它是比大一点,能够设置Panel.padding属性。
diagram.add(G( go.Part, go.Panel.Position, { background: '#eee' }, G( go.TextBlock, { text: '0, 0', background: '#394' } ), G( go.TextBlock, { text: '100, 100', background: '#394', position: new go.Point(100, 100) } ), G( go.TextBlock, { text: '0, 100', background: '#394', position: new go.Point(0, 100) } ), G( go.TextBlock, { text: '100, 000', background: '#394', position: new go.Point(100, 0) } ) ));
面板的全部面板元件的排列垂直从上到下。每一个元件得到其正常高度和任其正常的宽度,或者拉伸时的面板的宽度。若是元素的GraphObject.stretch有任何垂直伸展的部分,它被忽略。
整个面板的宽度匹配最宽的对象。注意,在最后textBlock不设置GraphObject.width属性,使得GraphObject.stretch值是有效的。
diagram.add(G( go.Part, go.Panel.Vertical, { background: '#eee' }, G( go.TextBlock, { text: '左', background: '#394', alignment: go.Spot.Left } ), G( go.TextBlock, { text: '中', background: '#394', alignment: go.Spot.Center } ), G( go.TextBlock, { text: '右', background: '#394', alignment: go.Spot.Right } ), G( go.TextBlock, { text: '----拉伸面板----', background: '#394' } ), G( go.TextBlock, { text: '扩展背景', background: '#394', alignment: go.Spot.Right, stretch: go.GraphObject.Fill } ) ));
由于没有指定面板的宽度,其宽度是最宽的元件的宽度。能够经过MAXSIZE来限制。
G( go.TextBlock, { text: '扩展背景', background: '#394', alignment: go.Spot.Right, stretch: go.GraphObject.Fill, MAXSIZE: new go.Size(100, NAN) } )