Flex布置界面

创建EComm.mxml文件。

用设计模式布置电子商务应用程序

打开EComm.mxml文件,选择设计视图,往视图里面拖入ApplicationControlBar组件

设置该组件在视图里面的属性为Docktrue(自动顶到最上方,宽度变为100% ),height90;如下图

ControlBar里面添加一个Canvas容器,并把Canvas的属性设置为width100%height100%;如下图

下面就可以在Canvas里面添加想要的组件了。

首先拖入一个Lable,属性设置为:TextFlexX0Y0;再拖入一个Lable,属性设置为:TextGrocerX0Y41;再拖入一个Button,属性设置为:IDbtnViewCartLableView Cart;再添加一个button,属性设置为:IDbtnCheckoutLableCheckout;在拖入一个Lable到右下角,属性设置为:Text:(c2010 Flex Grocer

在拖入一个HBox,属性设置为:width100%height100%;往HBox里面添加VBox,属性设置为:width100%height100%IDproducts,确保已经加到HBox里面,可以通过Layout面板查看

VBox里面拖入Lable,属性设置为:IDprodNameTextMilk,在拖入一个Lable,属性设置为:IDpriceText$1.99,在拖入Button,属性设置为:IDaddLableAdd To Cart。如下图

运行程序,如图

从上图看出,生成的页面不好看,右边的两个按钮在中间了,因为我们页面的布局使用了“absolute绝对位置”。

使用基于约束条件的布局

回到页面的设计试图,选择Checkout按钮,在属性里面找到Constraints,并且选中右对齐(相对应父容器Canvas),并且把X的值(偏移量)改为:10

选择View Cart按钮,在属性里面找到Constraints,并且选中右对齐(相对应父容器Canvas),并且把X的值(偏移量)改为:90

打开源码试图,查看两个按钮的源码,都有一个right属性:

<mx:Button y="20" label="View Cart" id="btnViewCart" right="90"/> <mx:Button y="20" label="Checkout" id="btnCheckout" right="10"/>  往HBox里面在添加一个VBox,属性设置为:IDcartBoxwidth设置为空。再在该VBox里面添加Lable,属性设置为:Your Cart Total$;继续添加LinkButton,属性设置为:LableView Cart。再次运行页面,如下

使用视图状态

当前我们使用的试图状态是基本的试图状态(Base state),如下

新建一个状态,右键点击Base state,选择new state,输入名字cartView

 

选中新建的试图状态cartView(在cartView试图状态下),把products对应的VBox的属性改为如下:width0height0,即隐藏掉,把cartBox对应的VBox宽度设为:100%

源码中多出如下代码

<mx:states> <mx:State name="cartView"> <mx:SetProperty target="{products}" name="width" value="0"/> <mx:SetProperty target="{products}" name="height" value="0"/> <mx:SetProperty target="{cartBox}" name="width" value="100%"/> </mx:State> </mx:states>  下面开始控制试图状态

回到base state基础的试图状态(点击Base state试图状态),选中view cart对应的linkbutton,添加onclick事件,为this.currentState=’cartView’,就是当我们单击View Cart这个linkbutton的时候,就把当前的试图状态改为cartView试图状态。

回到cartView试图状态,删除View Cart对应的linkbutton,并添加linkbutton,属性设置为:LableContinue ShoppingOn Clickthis.currentState=’’(表示回到基础试图状态),在Continue Shopping对应的linkbutton上面添加DataGrid,属性设置为:width100%,如下

View Cart试图状态的源码如下

<mx:State name="cartView"> <mx:SetProperty target="{products}" name="width" value="0"/> <mx:SetProperty target="{products}" name="height" value="0"/> <mx:SetProperty target="{cartBox}" name="width" value="100%"/> <mx:AddChild relativeTo="{cartBox}" position="lastChild"> <mx:LinkButton label="Continue Shopping" click="this.currentState=''" id="linkbutton2"/> </mx:AddChild> <mx:RemoveChild target="{linkbutton1}"/> <mx:AddChild relativeTo="{linkbutton2}" position="before"> <mx:DataGrid width="100%"> <mx:columns> <mx:DataGridColumn headerText="Column 1" dataField="col1"/> <mx:DataGridColumn headerText="Column 2" dataField="col2"/> <mx:DataGridColumn headerText="Column 3" dataField="col3"/> </mx:columns> </mx:DataGrid> </mx:AddChild> </mx:State>  运行页面,如下

点击“view cart”

 

 

你可能感兴趣的:(设计模式,datagrid,Flex,电子商务,constraints,button)