`

AsWing JList

    博客分类:
  • Flex
阅读更多

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

 

 

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();
        }
    }
}

 

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;
        }
    }
}

 

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;
        }
    }
}

 

分享到:
评论

相关推荐

    AsWing AEON 皮肤实例

    AsWing AEON皮肤实例是针对AsWing框架的一个特定主题,主要涉及用户界面的定制化和美化。AsWing是一款流行的Java Swing开发库,它提供了丰富的组件和强大的功能,帮助开发者构建美观、高效的桌面应用程序。Aeon皮肤...

    ASWING教程

    - **列表**:解释如何使用JList和VectorListModel组件创建列表。 - **树**:探讨如何使用JTree和TreeModel组件创建树形结构。 - **标签面板**:介绍JTabbedPane、JAccordion和JClosableTabbedPane等组件来实现标签式...

    aswing2.0 src

    ASwing2.0 SRC是一个针对ASwing库的源码版本,它为开发者提供了一种深入理解和定制ASwing的可能性。ASwing本身是一个ActionScript框架,它模仿了Java Swing的设计,为Flash和Flex应用提供了丰富的组件库,使得在这些...

    aswing组件知识点

    ### aswing组件知识点详解 #### 1. JPanel与透明度设置 `JPanel`作为Swing中的一个容器组件,主要用于组织其他组件,并提供布局管理功能。在AsWing框架中,用户可以设置`JPanel`的透明度。通过调用`setOpaque(false...

    AsWing UI源码

    【AsWing UI源码】是一个面向AS3(ActionScript 3)开发者的UI库,提供了丰富的用户界面组件和工具,旨在简化AS3中的图形用户界面(GUI)开发。这个库不仅包含了完整的源代码,还附带了GUI编辑器,方便开发者设计和...

    aswing API

    aswing API,与AsWing Book.pdf一起使用

    Aswing皮肤制作

    Aswing皮肤制作是一个让初学者了解和掌握如何定制个性化用户界面的过程。Aswing是一个轻量级的图形用户界面(GUI)库,它为Java开发者提供了一种创建美观、交互式的应用界面的方式。在这个教程中,我们将深入探讨...

    AsWing Book.pdf

    AsWing Book.pdfAsWing Book.pdfAsWing Book.pdfAsWing Book.pdf

    aswing_a3_1.3.2_allinone

    "aswing_a3_1.3.2_allinone" 是一个特定的软件包或库的版本标识,其中包含了ASwing、A3以及1.3.2这些关键元素。ASwing可能是一个基于Java Swing的开源图形用户界面(GUI)框架,A3可能是该框架的一个子项目或组件,...

    Flash之pureMVC,aswing框架Libs文件

    标题中的“Flash之pureMVC,aswing框架Libs文件”指的是两个主要的ActionScript库:PureMVC和AsWing。这两个库都是为在Adobe Flash环境中开发富互联网应用程序(RIA)而设计的,尤其在Flex框架下使用广泛。下面将详细...

    Flash9下as3.0编程的aswing包

    ASwing包是专门为在Flash9环境下使用ActionScript 3.0(AS3.0)进行编程设计的一个辅助工具集。这个工具集旨在提供一个类似Java Swing的开发框架,使得AS3.0的开发者能够更加方便地创建复杂的交互式应用程序。在...

    asWing知识点

    根据提供的信息,我们可以总结出以下关于asWing的知识点: ### 1. JPanel与AsWing容器 - **JPanel**:在AsWing中,`JPanel`扮演着一个非常重要的角色,作为容器组件,它能够容纳其他GUI组件。在设置`JPanel`时,...

    aswing类库

    aswing类库的下载,可以让大家使用现成的布局来显示对象很简单很方便

    aswing 帮助文档

    AS3的aswing帮助文档! AS3的程序员必备物品。。详细的介绍哦

    aswing book 1.0aswing入门案例

    用实例讲述aswing的入门,用一个日程管理的例子,详细的讲述了aswing的开发过程,注意从Google下载aswing源代码的时候下载1.0的swc就可以了,flex环境

    aswing.swc

    aswing的jar包,新手入门

    aswing flash ui编程的利器

    ASwing,全称为ActionScript Swing,是Adobe Flash平台上的一个开源项目,专为构建富互联网应用程序(RIA)的用户界面提供强大的支持。它借鉴了Java Swing的设计理念,为Flash开发者提供了一种类似Java Swing的组件...

    AsWing 2.0 ActionScript3.0的UI框架

    AsWing 2.0在12月12日发布了,增加了一些新的组件,如:JStepper(数字歩进器)、JDataChooser(日期选择器)、JAdvancedTable(高级表格,还未开发),全新的默认组件外观。新的外观自定义方式。 包内有源代码和SWC包。

    初学aswing学习实用例子

    ASwing,全称为ActionScript Swing,是Adobe Flex SDK中的一个组件库,用于在ActionScript 3.0项目中创建桌面应用程序。它模仿了Java Swing API的结构和功能,为Flex开发者提供了一种创建桌面GUI(图形用户界面)的...

Global site tag (gtag.js) - Google Analytics