AsWing学习整理(二)

1. JList

JList类似于flex的dataGroup控件,可以自己定义循环的内容

构造函数为:

JList(listData:*=null, cellFactory:ListCellFactory=null)

listData

数据源,可以是一个VectorListModel或Array

cellFactory

列表的CellFactory,一般调用GeneralListCellFactory


GeneralListCellFactory的构造函数是:

GeneralListCellFactory(listCellClass:Class, shareCelles:Boolean=true, sameHeight:Boolean=true, height:int=22)

listCellClass

实现ListCell接口的渲染器类,类似于dataGroup的itemRenderer,需要实现4个接口方法:

function setCellValue(v:*):void -- 设置item的显示内容,这里的参数v即为该item对应的数据

function getCellValue():* -- 获取item的相关内容,一般简单返回数据内容即可

function setListCellStatus(list:JList, isSelected:Boolean, index:int):void -- 设置item选中/未选中的事件

function getCellComponent():Component -- 返回item对应的组件,这里的返回值就是最终的item呈现内容

shareCelles

是否共享格子内容,默认为true(共享),就是当有多项的时候,只加载可见区域里的内容,当用下拉框滚动内容时,用共享的格子再来加载下一部分内容;设置为false就是加载所有内容,这样加载时间会长一点,但是可以避免共享格子时带来的闪动

sameHeight

所有的格子是否拥有同样的高度,默认为true

height

格子的高度,只有当sameHeight设置为true时才有效,默认为22


JList有两个很有用的方法:setVisibleCellWidth(设置格子宽度)和setVisibleRowCount(设置可见行数)

 

ExpandedBlockStart.gif Main.as(主程序)
package
{
    import flash.display.Sprite;
    import org.aswing.AsWingManager;
    import org.aswing.FlowLayout;
    import org.aswing.GeneralListCellFactory;
    import org.aswing.JList;
    import org.aswing.JScrollPane;
    import org.aswing.JWindow;
    import org.aswing.VectorListModel;
    import org.aswing.border.LineBorder;

    
public   class  Main extends Sprite
    {
        
public  function Main()
        {
            AsWingManager.initAsStandard(
this );

            var model:VectorListModel 
=   new  VectorListModel();
            
for (var j: int = 1 ;j < 10 ;j ++ )
            {
                var item:MyItem 
=   new  MyItem( " 条目 " + j, " pic00 " + j + " .jpg " );
                model.append(item);
            }
            
            var list:JList 
=   new  JList(model, new  GeneralListCellFactory(MyRenderer, false , true , 60 ));
            list.setVisibleCellWidth(
180 );
            list.setVisibleRowCount(
6 );
            
            
// 容器
            var window:JWindow  =   new  JWindow();
            window.setSizeWH(
400 , 400 );
            window.setLocationXY(
100 , 100 );
            window.setBorder(
new  LineBorder());
            window.getContentPane().setLayout(
new  FlowLayout());
            window.getContentPane().append(
new  JScrollPane(list));
            window.show();
        }
    }
}

 

ExpandedBlockStart.gif MyRenderer.as(渲染器)
package
{
    import flash.events.Event;
    import flash.net.URLRequest;
    import org.aswing.ASColor;
    import org.aswing.AssetPane;
    import org.aswing.Component;
    import org.aswing.FlowLayout;
    import org.aswing.JLabel;
    import org.aswing.JList;
    import org.aswing.JLoadPane;
    import org.aswing.JPanel;
    import org.aswing.ListCell;
    import org.aswing.geom.IntDimension;

    
public   class  MyRenderer implements ListCell
    {
        
private  var value: * ;
        
        
private  var panel:JPanel;
        
private  var label:JLabel;
        
private  var loader:JLoadPane;
        
        
public  function MyRenderer()
        {
            
// 构造函数做初始化工作
            panel  =   new  JPanel( new  FlowLayout());
            panel.setOpaque(
true );
            panel.setBackground(ASColor.GRAY);
            
            
// 文字
            label  =   new  JLabel();
            
            
// 图片
            loader  =   new  JLoadPane();
            loader.setScaleMode(AssetPane.SCALE_FIT_PANE);
            loader.setPreferredSize(
new  IntDimension( 60 , 60 ));
            loader.addEventListener(Event.COMPLETE,onLoadComplete);
            
            panel.append(loader);
            panel.append(label);
        }
        
        
private  function onLoadComplete( event :Event): void
        {
            
// 这里必须要设置,不然加载的图片显示不正常
            loader.doLayout();
        }
        
        
public  function setCellValue(v: * ): void
        {
            value 
=  MyItem(v);
            
// 图片
            loader.load( new  URLRequest(value.getImage));

            
// 文字
            label.setText(value.getLabel);            
        }

        
public  function getCellValue(): *
        {
            
return  value;
        }
        
        
public  function setListCellStatus(list:JList, isSelected:Boolean, index: int ): void
        {
            
if (isSelected)
            {
                panel.setBackground(list.getSelectionBackground());
            }
            
else
            {
                panel.setBackground(list.getBackground());
            }
        }
        
        
public  function getCellComponent():Component
        {
            
return  panel;
        }
    }
}

 

ExpandedBlockStart.gif MyItem.as(项数据model)
package
{
    
public   class  MyItem
    {
        
private  var _label:String;
        
private  var _image:String;
        
        
public  function MyItem(label:String,image:String)
        {
            _label 
=  label;
            _image 
=  image;
        }
        
        
public  function toString():String
        {
            
return   " label: "   +  _label  +   " ,image: "   +  _image;
        }
        
        
/* *
         * getter/setter
         
*/
        
public  function  get  getLabel():String
        {
            
return  _label;
        }
        
public  function  set  setLabel(value:String): void
        {
            _label 
=  value;
        }
        
        
public  function  get  getImage():String
        {
            
return  _image;
        }
        
public  function  set  setImage(value:String): void
        {
            _image 
=  value;
        }
    }
}

 

2. PropertyTableModel

PropertyTableModel是JTable的表格模型之一,常常用于把一个对象列表中的对象数据,以对象为行,以对象属性为列来显示,它提供默认方式把属性值以直接字符串化显示,也提供转换器(PropertyTranslator 或Function)把值转换成期望的字符串格式来显示

ExpandedBlockStart.gif 基本调用
package
{
    import flash.display.Sprite;
    
    import org.aswing.AsWingManager;
    import org.aswing.FlowLayout;
    import org.aswing.JTable;
    import org.aswing.JWindow;
    import org.aswing.VectorListModel;
    import org.aswing.border.LineBorder;
    import org.aswing.table.PropertyTableModel;
    
    
public   class  Test extends Sprite
    {
        
public  function Test()
        {
            AsWingManager.initAsStandard(
this );
            
// 容器
            var window:JWindow  =   new  JWindow();
            window.setSizeWH(
400 , 400 );
            window.setLocationXY(
100 , 100 );
            window.setBorder(
new  LineBorder());
            window.getContentPane().setLayout(
new  FlowLayout());
            window.show();
            
            
// JTable
            var data:Array  =  [{name: " iiley " , sex: 1 , age: 26 },
                {name:
" Comeny " , sex: 0 , age: 24 },
                {name:
" Tom " , sex: 1 , age: 30 },
                {name:
" Lita " , sex: 0 , age: 16 }
                ];

            var model:VectorListModel 
=   new  VectorListModel();
            model.appendAll(data);
            model.append({name:
" 胡晓伟 " , sex: 1 , age: 28 });
            
            var tableModel:PropertyTableModel 
=   new  PropertyTableModel(
                model,
                [
" 姓名 " , " 性别 " , " 年龄 " ],
                [
" name " , " sex " , " age " ],
                [
null ,sexTranslator,
                    function(info:
* , key:String): *
                    {
                        
return  info[key] + " " ;
                    }
                ]);
            
            var table:JTable 
=   new  JTable(tableModel);
            window.getContentPane().append(table);
        }
        
        
private  function sexTranslator(info: * , key:String):String
        {
            
if (info[key] == " 1 " )
            {
                
return   " " ;
            }
            
else
            {
                
return   " " ;
            }
        }
    }
}

 

3. DefaultTableModel

DefaultTableModel是JTable的表格模型之一

ExpandedBlockStart.gif 基本调用
package
{
    import flash.display.Sprite;
    import org.aswing.AsWingManager;
    import org.aswing.FlowLayout;
    import org.aswing.JTable;
    import org.aswing.JWindow;
    import org.aswing.border.LineBorder;
    import org.aswing.table.DefaultTableModel;
    
    
public   class  Test extends Sprite
    {
        
public  function Test()
        {
            AsWingManager.initAsStandard(
this );
            
// 容器
            var window:JWindow  =   new  JWindow();
            window.setSizeWH(
400 , 400 );
            window.setLocationXY(
100 , 100 );
            window.setBorder(
new  LineBorder());
            window.getContentPane().setLayout(
new  FlowLayout());
            window.show();
            
            
// JTable
            var column:Array  =  [ " 姓名 " , " 性别 " , " 年龄 " ];            
            var data:Array 
=  [[ " Sammy " , " " , " 25 " ],[ " Ruby " , " " , " 23 " ]];
            
            
// 根据提供的列名和数据初始化
            var model:DefaultTableModel  =   new  DefaultTableModel().initWithDataNames(data,column);
            
// 根据提供的列名和指定行数初始化
            
// var model:DefaultTableModel = new DefaultTableModel().initWithNamesRowcount(column,5);
            
// 根据指定的行数和列数初始化
            
// var model:DefaultTableModel = new DefaultTableModel().initWithRowcountColumncount(5,5);
            
            var table:JTable 
=   new  JTable(model);
            window.getContentPane().append(table);
        }
    }
}

 

4. JFrame标题栏自定义

ExpandedBlockStart.gif Code
package
{
    import flash.display.Sprite;
    
    import org.aswing.AsWingManager;
    import org.aswing.Component;
    import org.aswing.JFrame;
    import org.aswing.plaf.ASColorUIResource;
    import org.aswing.plaf.ComponentUI;

     public  class JFrameSample extends Sprite
    {
         public function JFrameSample()
        {
            AsWingManager.initAsStandard( this);
            
             var frame:JFrame =  new JFrame( null, " My Title ");
            frame.setSizeWH( 300, 250);
            frame.show();
            
             // 修改标题栏背景色
             var ui:ComponentUI = frame.getUI();
            ui.putDefault( " Frame.mideground ", new ASColorUIResource( 0xFFFF00));
            frame.setUI(ui);
            
             // 修改字体颜色与标题栏按钮背景色
             var titleBar:Component = frame.getTitleBar().getSelf();
            ui = titleBar.getUI();
            ui.putDefault( " FrameTitleBar.foreground ", new ASColorUIResource( 0xFF0000));
            ui.putDefault( " FrameTitleBar.mideground ", new ASColorUIResource( 0x0000FF,. 5));
            titleBar.setUI(ui);
        }
    }
}

 

5. JScrollPane应用于非ASWING组件

ExpandedBlockStart.gif Code
package
{
     import flash.display.Sprite;
     import flash.display.StageScaleMode;
     import flash.text.TextField;
     import flash.text.TextFieldAutoSize;
    
     import org.aswing.AssetPane;
     import org.aswing.JScrollPane;
     import org.aswing.geom.IntDimension;

     public  class Temp  extends Sprite
    {
         public  function Temp()
        {
            stage.scaleMode = StageScaleMode.NO_SCALE;
            
             var textBox:TextField = new TextField();
            textBox.autoSize = TextFieldAutoSize.LEFT;
            textBox.multiline =  true;
            textBox.wordWrap =  true;
            textBox.width = 200;
            textBox.text = "asdffffffffffffffffffffferewrfwerewfewwefwwrwwwwwwwwwwwww/:11/:13The 我 胡Ì 是 /:02 ab the  /:03  with a  /:04/:02/:01  as whye  /:05 with a  /:06  on egg  /:07 with a  /:02  /:02  /:55 中华人民共和国的成立,标志着100多年来半殖民地半封建的旧中国历史的 /:02 结束,揭开了中国历史的新篇章,使一个占世界人口近四分之一的大国成/:88为独立自主的国家,人民从此成为国家的主人/:77";
            textBox.background =  true;
            textBox.backgroundColor = 0xFFFF00;
            
             var scrollPane:JScrollPane = new JScrollPane(new AssetPane(textBox));
            scrollPane.setLocationXY(100,100);
            scrollPane.setPreferredSize(new IntDimension(214, 100));
            scrollPane.pack();
            addChild(scrollPane);
        }
    }
}

 

6. 颜色选取器

ExpandedBlockStart.gif ColorTest
package
{
     import flash.display.Sprite;
     import flash.display.StageScaleMode;
     import flash.events.MouseEvent;
    
     import org.aswing.ASColor;
     import org.aswing.border.CaveBorder;
     import org.aswing.colorchooser.JColorSwatches;
     import org.aswing.event.InteractiveEvent;

     public  class ColorTest  extends Sprite
    {
         private  var picker:JColorSwatches;
         private  var rect:Sprite;
        
         public  function ColorTest()
        {
            stage.scaleMode = StageScaleMode.NO_SCALE;
        
            picker = new JColorSwatches();
            picker.setForeground(new ASColor(0x0000FF, 1));
            picker.setAlphaSectionVisible( false);
            picker.setHexSectionVisible( false);
            picker.setSelectedColor(ASColor.BLUE);
            picker.addEventListener(InteractiveEvent.STATE_CHANGED,colorSelectedChange);
            picker.setVisible( false);
            picker.setBorder(new CaveBorder( null,6));
            picker.pack();
            this.addChild(picker);
            
            rect = new Sprite();
            rect.graphics.lineStyle(1);
            rect.graphics.beginFill(picker.getSelectedColor().getRGB());
            rect.graphics.drawRect(0,0,25,20);
            rect.graphics.endFill();
            rect.x = rect.y = 50;
            rect.addEventListener(MouseEvent.CLICK,onClick);
            this.addChild(rect);
        }
        
         private  function onClick(event:MouseEvent):void
        {
             if(!picker.visible)
            {
                picker.x = rect.x+25+2;
                picker.y = rect.y-picker.height+rect.width;
                picker.setVisible( true);
                stage.addEventListener(MouseEvent.MOUSE_UP,stageMouseUp);
            }
        }
        
         private  function colorSelectedChange(event:InteractiveEvent):void
        {
            rect.graphics.clear();
            rect.graphics.lineStyle(1);
            rect.graphics.beginFill(picker.getSelectedColor().getRGB());
            rect.graphics.drawRect(0,0,25,20);
            rect.graphics.endFill();
            
            picker.setVisible( false);
            stage.removeEventListener(MouseEvent.MOUSE_UP,stageMouseUp);
        }
        
         private  function stageMouseUp(event:MouseEvent):void
        {
             if (event.target != picker) 
            {
                picker.setVisible( false);
                stage.removeEventListener(MouseEvent.MOUSE_UP,stageMouseUp);
            }
            event.stopImmediatePropagation();
        }
    }
}

 

转载于:https://www.cnblogs.com/CoderWayne/archive/2010/12/01/1893138.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值