- 浏览: 1327211 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (896)
- spring4 (14)
- hibernate3 (26)
- spring2 (35)
- struts2 (55)
- struts1 (15)
- 设计模式 (15)
- java (172)
- mybatis3 (11)
- sql (17)
- mysql (13)
- jbpm (10)
- J2EE (45)
- tools (29)
- js (83)
- 数据结构 (13)
- Html (26)
- web (22)
- flex (33)
- Oracle (57)
- linux (49)
- 算法 (6)
- 其它 (12)
- easyui (1)
- bootstrap (13)
- xml (2)
- tomcat (1)
- redis (10)
- activemq (2)
- webservice (11)
- maven (2)
- springboot (1)
- ubuntu (1)
- python (14)
- rocketmq (1)
- springcloud (10)
- opencv (1)
最新评论
-
mike_eclipse:
Hashtable是线程不安全的吗?好像是线程安全的吧?
多线程之集合类 -
July01:
推荐用StratoIO打印控件,浏览器和系统的兼容性都很好,而 ...
lodop打印控件 -
xingcxb:
经过测试,假的,依旧会出现中文乱码!!!!store方法里面采 ...
java 读写Properties文件,不会出现中文乱码 -
tiger20111989:
...
Spring注解方式管理事务 -
zw7534313:
...
js 文字上下滚动 无间断循环显示
在Panel右上方加Button:
(1)页面*.mxml文件:
<s:TitleWindow xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:container="com.core.container.*">
<!-- 传统的Panel 右上方标题栏,不能加Button
<s:Panel width="100%" height="50%" title="評估型KPI信息">
<mx:DataGrid width="100%" height="100%" id="kpiList" selectedIndex="0"
horizontalScrollPolicy="auto" verticalScrollPolicy="auto">
</mx:DataGrid>
</s:Panel>
-->
<!-- 使用自定义组件,添加三个按钮,使用actionscript类构建三个Button-->
<container:MoreButtonPanel title="評估型KPI信息" width="100%" height="50%" layout="horizontal" stateHost="{this}" id="morePanel">
<mx:DataGrid width="100%" height="100%" id="kpiList" selectedIndex="0"
horizontalScrollPolicy="auto" verticalScrollPolicy="auto">
</mx:DataGrid>
</container:MoreButtonPanel>
<fx:Script>
//三个Button一起创建,不能识别,使用btn.addEventListener(MouseEvent.CLICK,function(){ Alert.show('11');});
/*public function buttonHandler(type:String):void{
Alert.show('btn');
}
*/
可以在MoreButtonPanel.as中的回调函数传个event参数,这样可以识别点击了哪个按钮。
public function buttonHandler(type:String,obj:Object):void{
Alert.show(obj.toString()+"----");
Alert.show(obj.id+"--"+obj.label);
}
</fx:Script>
</s:TitleWindow>
(2) 上面需要使用的com.core.container.MoreButtonPanel.as文件:
package com.core.container
{
import flash.events.MouseEvent;
import mx.containers.Panel;
import mx.controls.Button;
public class MoreButtonPanel extends Panel
{
public var type:String;
public var _mybtn:Button;
public var _mybtn2:Button;
public var _mybtn3:Button;
public var stateHost:Object;
public function MoreButtonPanel()
{
super();
}
protected override function createChildren(): void {
super.createChildren();
_mybtn = new Button();
_mybtn.height=20;
_mybtn.width=100;
_mybtn.label = "PE 整體信息";
_mybtn.id = "kpiBtn";
_mybtn.addEventListener(MouseEvent.CLICK,buttonHandler);
this.rawChildren.addChild(_mybtn);
_mybtn2 = new Button();
_mybtn2.height=20;
_mybtn2.width=110;
_mybtn2.label = "IPVPN Backbone";
_mybtn2.id = "kpiBtn2";
_mybtn2.addEventListener(MouseEvent.CLICK,buttonHandler);
this.rawChildren.addChild(_mybtn2);
_mybtn3 = new Button();
_mybtn3.height=20;
_mybtn3.width=100;
_mybtn3.label = "鏈路接口信息";
_mybtn3.id = "kpiBtn3";
_mybtn3.addEventListener(MouseEvent.CLICK,buttonHandler);
this.rawChildren.addChild(_mybtn3);
}
protected override function layoutChrome(unscaledWidth: Number, unscaledHeight:Number):void {
super.layoutChrome(unscaledWidth, unscaledHeight);
_mybtn.move(this.width-_mybtn.width-23,6); //定位
_mybtn2.move(this.width-_mybtn.width-_mybtn2.width-23-5,6);
//_mybtn3.move(this.width-_mybtn.width-_mybtn2.width-_mybtn3.width-23-5*2,6);
_mybtn3.move(this.width-_mybtn.width-23,6);
}
private function buttonHandler(event:MouseEvent):void
{
if(stateHost.hasOwnProperty('buttonHandler')){
(stateHost['buttonHandler'] as Function).call(stateHost['buttonHandler'],type);
}
}
//可以传递event,如果多个按钮,根据event.target来判断点击哪个铵钮
/*private function buttonHandler(event:MouseEvent):void
{
if(stateHost.hasOwnProperty('buttonHandler')){
(stateHost['buttonHandler'] as Function).call(stateHost['buttonHandler'],type,event.target); //传递event的对象
}
}*/
}
}
有一个问题,在页面上如何控制三个Button的位置?
DisplayObject类及其子类中的localToGlobal () 方法和globalToLocal()方法:
//Point将 point 对象从显示对象的(本地)坐标转换为舞台(全局)坐标。
var p:Point=this.views.morePanel._mybtn.localToGlobal(new Point(this.views.morePanel._mybtn.x,this.views.morePanel._mybtn.y));
(3)Meditor:
给button增加事件的两种方法:
第一种:
//记录Type,控制三个铵钮的显示
if(Type=="Avai"||Type=="Deli"){
this.views.morePanel._mybtn3.visible = false;
//this.views.morePanel._mybtn3.includeInLayout=false;
this.views.morePanel._mybtn3.enabled=false;
//增加事件
this.views.morePanel._mybtn.addEventListener(MouseEvent.CLICK,function(){ Alert.show('11');});
this.views.morePanel._mybtn2.addEventListener(MouseEvent.CLICK,function(){ Alert.show('123');});
}
else if(Type=="Late"){
this.views.morePanel._mybtn.visible = false;
//this.views.morePanel._mybtn.includeInLayout=false;
this.views.morePanel._mybtn.enabled=false;
//增加事件
this.views.morePanel._mybtn2.addEventListener(MouseEvent.CLICK,function(){ Alert.show('11');});
this.views.morePanel._mybtn3.addEventListener(MouseEvent.CLICK,function(){ Alert.show('123');});
}
第二种: 调用MoreButtonPanel.as中命名的回调函数buttonHandler()
--------------------------------------------------------------------------
if(groupVis.numChildren>0){ // 是否有子结点
groupVis.removeAllChildren();
}
<mx:FormItem label="分組" id="groupVis" includeInLayout="false" visible="false" />
----------------------------------------------------------------------------------------------------------------------------------
78.
[Bindable]
public var totalIndexArr:ArrayCollection=new ArrayCollection();
var cc:CheckBox=view.totalIndexArr[1];
cc.selected=true;
if(grid.numChildren>0){
grid.removeAllChildren();
}
var len:int=groupArr.length;
var gridItem:GridItem;
var gridRow:GridRow;
var index:int=0;
//grid.x=this.width/2;
for(var k=0;k<len;k++){
if (index%3 == 0)
{
gridRow = new GridRow(); //增加一行
grid.addChild(gridRow);
}
index++;
var c:CheckBox=new CheckBox();
c.label=groupArr[k];
//c.data=groupArr[k];
//groupVis.addChild(c);
c.height = 20; //不设置height,width,将不显示
c.width = 80;
totalIndexArr.addItem(c); //totalIndexArr 是一个ArrayCollection,它会绑定到gridRow里的checkbox
gridItem = new GridItem();
gridItem.addChild(c);
gridRow.addChild(gridItem);
}
http://hi.baidu.com/selina_1113/blog/item/589069050191f969020881d6.html
在数组(ArrayCollection)中使用[Bindable]标签时,无论是数组被替换还是数组中的元素改动,都会触发更新事件。
//选 中的数
private function selectedNum():int{
var totalCheckBox:ArrayCollection = view.totalIndexArr;
var k:int=0;
var num:int=totalCheckBox.length;
for(var i:int=0;i<num;i++){
var c:CheckBox=totalCheckBox[i];
if(c.selected){
k++;
groupNames+=c.label+",";
}
}
return k;
}
74、flex布局是不考虑组件是否处于可视状态。也就是说不论组件是否可视,它都会在区域中占空间。但你可以通过includeInLayout设置组件是否参与布局。要注意的是includeInLayout只影响组件是否处于容器的布局中而不影响组件是否处于可视状态。
111、在List组件中,你可以把allowMultipleSelection设为true,这样用户按着ctrl键可以选择多个项。
112、List组件中的selectedIndices/selectedItems为被选中的序号和项,它们均为Vector对像。
发表评论
-
如何解决Flex 中字符串超长的显示 ,重写mx.controls.Label
2011-03-17 16:53 3366扩展mx.controls.Label,覆盖data set方 ... -
在DataGrid 中使用LinkButtion(重写LinkButtion)
2011-03-14 10:37 1359在DataGrid 中使用LinkButtion(重写Link ... -
flex mx:Form
2011-02-14 10:17 1749<mx:Form width="100%&qu ... -
flex 下载Excel文件 fileReference.download 使用servlet
2010-12-30 11:48 2707一、使用fileReference.downl ... -
flex 加载txt文件 URLLoader
2010-12-30 10:50 2666点击按钮,执行btn_downlo ... -
horizontalCenter和verticalCenter
2010-12-22 09:32 9632horizontalCenter和verticalCenter ... -
flex 中的RegExp
2010-12-22 09:31 1542var reg:RegExp=/^\s*$/g; //为空r ... -
flex外观设计及时生成效果的css
2010-12-22 09:30 846http://examples.adobe.com/flex3 ... -
flex 了解的一些细节
2010-12-21 15:20 178611.显示红色的* : <mx ... -
Flex State的用法
2010-12-15 23:28 50091.State用来控制页面间的切换:<s:states& ... -
Flex ItemRenderer 自定义组件
2010-12-12 19:28 16371.MyListItemRenderer.mxml: ... -
Flex 分页,事件Event
2010-12-12 19:21 12851.Page.mxml: (公用组件) <?xml v ... -
Flex与Java 对象转换 HashMap,List
2010-12-10 11:40 36301.java的HashMap和actionScript的Obj ... -
flash.utils.Dictionary与Array,ArrayConllection,Object, for与for each
2010-12-07 20:51 19591.for与for each:for..in 循环用来基于键进 ... -
Flex的Array,ArrayConllection,for each
2010-12-07 20:43 18861.Flex的Array和ArrayCollectio ... -
flex 常见问题
2010-12-05 10:03 18191.事件:ListEvent.ITEM_CLICK mouse ... -
Flex Cairngorm框架(RIA)
2009-12-14 15:23 1012http://opensource.adobe.com/wik ... -
Flex webservice
2009-12-14 09:09 1795Required parameter 'in0' not fo ... -
ajax-bridge 以及它在web中的应用
2009-12-11 12:04 1325FABridge.flashvars变量值.root();// ... -
Flex css (2) 色彩渐变
2009-12-04 13:42 22147、Margins: 8、Padding: - ...
相关推荐
2. 计算偏移量:在mousedown事件中,记录下鼠标按下时相对于面板左上角的坐标作为偏移量。 3. 更新位置:在mousemove事件中,获取当前鼠标位置,结合偏移量计算出新的面板位置,并设置面板的x和y属性。 4. 阻止默认...
第一个组件位于左上角,然后按顺时针方向填充网格。 - **行和列的动态性**:如果添加的组件数量超过网格的行列数,`GridLayout`会自动扩展网格来适应这些组件。 4. **示例代码(参考GridLayoutDemo.java)** 下面...
3. **处理鼠标移动事件**:在OnMouseMove事件中,我们计算出鼠标当前相对于窗体左上角的新位置,并根据鼠标移动的距离来更新窗体的位置。 ```delphi procedure TForm1.FormMouseMove(Sender: TObject; Shift: ...
**Absolute模式**下,组件的位置由`x`、`y`坐标决定,坐标原点位于Canvas容器的左上角。此模式下,组件位置的精确控制变得非常直观,但同时也意味着更多的手动调整工作。例如,如果设置了`<mx:Button x="10" y="10" ...
在`paint`方法内,我们使用`Graphics`对象进行绘图,首先画了一条从(50, 50)到(200, 150)的红色线,然后填充了一个左上角坐标为(100, 100),宽高各为100的蓝色矩形。 AWT的绘图操作是直接在内存中的缓冲区上进行的...
- **Left**和**Top**:设定窗体的左上角坐标。 - **ControlBox**:决定是否显示窗体标题栏的控制按钮。 - **MaximizeBox**和**MinimizeBox**:控制最大化和最小化按钮的显示。 - **AcceptButton**:指定Enter键...
这里的`(0, 0)`是图片在Panel上的位置,通常设置为(0, 0)使其从左上角开始。 接着,我们获取图片的宽度和高度,以便设置窗口大小以适应图片。`image_width = to_bmp_image.GetWidth()`和`image_height = to_bmp_...
- **实例说明**:在窗体中显示滚动的文字,常用于新闻或公告的显示。 - **技术要点**: - 使用`Timer`控件来控制文字的移动速度。 - 使用`Label`控件显示文字。 - 通过修改`Left`属性来实现文字的滚动。 **实例...
4. **窗口图标设置**:为了使应用程序更具辨识度,开发者通常会在窗口的左上角设置图标。在wxPython中,可以通过`wx.Icon()`函数加载图片,并使用`frame.SetIcon(icon)`来设置窗口的图标。图片格式应适配系统要求,...
`:绘制一个矩形,左上角坐标为(50, 50),宽50高100。 - `g.setColor(Color.RED);`:设置颜色为红色。 - `g.fillRect(50, 50, 50, 100);`:填充矩形。 **15. `sleep`和`wait`的区别** - **知识点概述**: - `...
- 图片或按钮左上角的黑白小方框可以预览效果,方便在设计过程中检查和调整。 10. **Axure的优势**: - 相比于纸笔、Word、PPT、Visio、Photoshop/Fireworks和Dreamweaver,Axure在原型设计上更加专业,提供了一...