• 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(设置可见行数)

    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();
            }
        }
    }
    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;
            }
        }
    }
    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)把值转换成期望的字符串格式来显示

    基本调用
    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的表格模型之一

    基本调用
    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标题栏自定义

    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组件

    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. 颜色选取器

    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();
            }
        }
    }
  • 相关阅读:
    Java基础知识强化94:Calendar类之Calendar概述和获取日历字段的方法
    Java基础知识强化93:算一下你来到这个世界多少天的案例
    Java基础知识强化92:日期工具类的编写和测试案例
    Java基础知识强化91:DateFormat类之DateFormat实现日期和字符串的相互转换
    Java基础知识强化90:Date类之Data类中日期和毫秒相互转换
    Java基础知识强化89:Date类之Data类概述及其方法
    Java基础知识强化88:BigDecimal类之BigDecimal类引入和概述 以及 BigDecimal的使用(加减乘除)
    Java基础知识强化87:BigInteger类之BigInteger加减乘除法的使用
    Java基础知识强化86:BigInteger类之BigInteger概述和构造方法
    Java基础知识强化85:System类之arraycopy()方法(数组拷贝)
  • 原文地址:https://www.cnblogs.com/CoderWayne/p/1893138.html
Copyright © 2020-2023  润新知