- 浏览: 590191 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
smilezhouwei:
请问CruiseControl在加载jar包时,由于jar包过 ...
修改CruiseControl的端口 -
zengxuefei:
不起作用啊,有bug
Flex+Java多文件上传 -
lzeus:
模仿的tomcat源码吧?
java事件处理机制(自定义事件)【转】 -
yangbobestone:
...
FreeMarker整合Struts2 -
fddjxllren:
那是因为你没配置事务,楼主的那个主要是针对事务的写法
Spring2.5+JUnit4单元测试
<!--StartFragment -->
下面这个实例是将相应的物品拖放指定面板中,本例用到了MVC模式
物品为分为上衣和裤子,有三个面板Panel,一个容纳上衣的面板,一个容纳裤子的面板,还有一个是货架可以容纳上衣和裤子。
即:
1)货架中的上衣可以拖放到上衣面板中,反之上衣面板中的物品可以拖放到货架中;
2)货架中的裤子可以拖放到裤子面板中,反之裤子面板中的物品可以拖放到货架中;
3)上衣不能拖放到裤子面板中,裤子不能拖放到上衣面板中;
效果图请看附近中view.jpg
第一步:创建物品VO,
ItemVO.java
package mytest.dragDrop.item { public class ItemVO { private var _id:int; private var _name:String; private var _type:int; public function ItemVO($id:int, $name:String, $type:int) { this._id = $id; this._name = $name; this._type = $type; } public function get type():int { return _type; } public function set type(value:int):void { _type = value; } public function get name():String { return _name; } public function set name(value:String):void { _name = value; } public function get id():int { return _id; } public function set id(value:int):void { _id = value; } } }
第二步:创建物品组件,因为物品要以组件Label的形式放在Panel中(可以根据自己的要求来包装物品VO)
ItemLabel.as
package mytest.dragDrop.item { import org.aswing.JLabel; import org.aswing.dnd.DragManager; import org.aswing.dnd.SourceData; import org.aswing.event.DragAndDropEvent; public class ItemLabel extends JLabel { private var _item:ItemVO; public function ItemLabel($item:ItemVO) { super($item.name); this._item = $item; setDragEnabled(true); addEventListener(DragAndDropEvent.DRAG_RECOGNIZED, __onDragStart); } private function __onDragStart(event:DragAndDropEvent):void{ DragManager.startDrag(this, new SourceData("item", _item)); } public function getItem():ItemVO{ return this._item; } } }
第三步:Model类
ItemModel.as
package mytest.dragDrop.item { import flash.events.Event; import flash.events.EventDispatcher; import org.aswing.util.HashMap; public class ItemModel extends EventDispatcher { public static const EVENT_GET_ITEM_SUCC:String = "event_get_item_succ"; private var _itemMap:HashMap; public function ItemModel() { _itemMap = new HashMap(); } public function getItemByType($type:int):void{ if($type == 1001){ _itemMap.put(1001, [ new ItemLabel(new ItemVO(8002, "上衣2", 1001)), new ItemLabel(new ItemVO(8003, "上衣3", 1001)) ]); } else if($type == 1002){ _itemMap.put(1002, [ new ItemLabel(new ItemVO(9001, "裤子1", 1002)), ]); } else{ _itemMap.put(-1, [ new ItemLabel(new ItemVO(8001, "上衣1", 1001)), new ItemLabel(new ItemVO(9002, "裤子2", 1002)), new ItemLabel(new ItemVO(9003, "裤子3", 1002)) ]); } dispatchEvent(new Event(EVENT_GET_ITEM_SUCC)); } public function get itemMap():HashMap { return _itemMap; } public function set itemMap(value:HashMap):void { _itemMap = value; } } }
第四步:Control类
ItemControl.as
package mytest.dragDrop.item { public class ItemControl { private var _itemModel:ItemModel; public function ItemControl($itemModel:ItemModel) { this._itemModel = $itemModel; } public function getItemByType($type:int):void{ _itemModel.getItemByType($type); } } }
第五步:物品面板,前面的ItemLabel是会放在ItemPanel中的
ItemPanel.as
package mytest.dragDrop.item { import flash.events.Event; import org.aswing.ASColor; import org.aswing.JPanel; import org.aswing.border.TitledBorder; import org.aswing.event.DragAndDropEvent; public class ItemPanel extends JPanel { private var _itemModel:ItemModel; private var _itemControl:ItemControl; private var _type:int; private var _originalBG:ASColor; public function ItemPanel($itemModel:ItemModel, $itemControl:ItemControl, $title:String, $type:int = -1) { super(); this._itemModel = $itemModel; this._itemControl = $itemControl; this._type = $type; var border:TitledBorder = new TitledBorder(null, $title); border.setColor(ASColor.BLACK); setBorder(border); setDropTrigger(true); setDragAcceptableInitiatorAppraiser(__onDragAppraiser); addEventListener(DragAndDropEvent.DRAG_ENTER, __onDragEnter); addEventListener(DragAndDropEvent.DRAG_EXIT, __onDragExit); addEventListener(DragAndDropEvent.DRAG_DROP, __onDragDrop); setOpaque(true); _originalBG = getBackground(); _itemModel.addEventListener(ItemModel.EVENT_GET_ITEM_SUCC, __onGetItemSucc); _itemControl.getItemByType($type); } private function __onGetItemSucc(event:Event):void{ appendItemLabel(_itemModel.itemMap.get(this._type) as Array); } private function appendItemLabel(items:Array):void{ for each(var item:ItemLabel in items){ this.append(item); } _itemModel.removeEventListener(ItemModel.EVENT_GET_ITEM_SUCC, __onGetItemSucc); } private function __onDragAppraiser(initiator:ItemLabel):Boolean{ if(_type == -1) return true; else return _type == initiator.getItem().type; } private function __onDragEnter(event:DragAndDropEvent):void{ var initiator:ItemLabel = event.getDragInitiator() as ItemLabel; if(__onDragAppraiser(initiator)){ setBackground(ASColor.GREEN); } } private function __onDragExit(event:DragAndDropEvent):void{ setBackground(_originalBG); var initiator:ItemLabel = event.getDragInitiator() as ItemLabel; if(__onDragAppraiser(initiator)){ } } private function __onDragDrop(event:DragAndDropEvent):void{ setBackground(_originalBG); var initiator:ItemLabel = event.getDragInitiator() as ItemLabel; if(__onDragAppraiser(initiator)){ append(initiator); } } public function getItems():Array{ return this.children; } } }
第六步:主界面
ItemDragDrop.as
package mytest.dragDrop.item { import flash.display.Sprite; import flash.events.MouseEvent; import org.aswing.AsWingManager; import org.aswing.GridLayout; import org.aswing.JButton; import org.aswing.JFrame; import org.aswing.JPanel; import org.aswing.geom.IntDimension; public class ItemDragDrop extends Sprite { private var _frm:JFrame; private var _jacketArea:ItemPanel; private var _pantsArea:ItemPanel; private var _whiteArea:ItemPanel; private var _itemModel:ItemModel; private var _itemControl:ItemControl; public function ItemDragDrop() { AsWingManager.initAsStandard(this); _itemModel = new ItemModel(); _itemControl = new ItemControl(_itemModel); _frm = new JFrame(null, "物品分配"); _jacketArea = new ItemPanel(_itemModel, _itemControl, "上衣", 1001); _pantsArea = new ItemPanel(_itemModel, _itemControl, "裤子", 1002); _whiteArea = new ItemPanel(_itemModel, _itemControl, "货架", -1); var panel:JPanel = new JPanel(new GridLayout(2, 2, 4, 4)); panel.appendAll(_jacketArea, _pantsArea, _whiteArea); var showBtn:JButton = new JButton("查看"); showBtn.addEventListener(MouseEvent.CLICK, __onClick); panel.appendAll(showBtn); _frm.setContentPane(panel); _frm.setSize(new IntDimension(400, 400)); _frm.show(); } private function __onClick(e:MouseEvent):void{ trace("===上衣==="); for each (var jacket:ItemLabel in _jacketArea.getItems()){ trace(jacket.getItem().name); } trace(); trace("===裤子==="); for each (var pants:ItemLabel in _pantsArea.getItems()){ trace(pants.getItem().name); } trace(); trace("===货架==="); for each (var white:ItemLabel in _whiteArea.getItems()){ trace(white.getItem().name); } trace(); } } }
发表评论
-
AS3 条件编译
2013-06-07 09:38 1350转:http://www.lite3.cn/blog/?p= ... -
TextField没有buttonMode的方法..
2010-12-10 16:28 2347TextField没有buttonMode的方法..不过由于T ... -
ActionScript 处理html超级链接
2010-12-09 11:14 2163ActionScript 处理html超级链接 p ... -
通过代理传参数
2010-07-02 11:43 1492通过代理传参数 package com.xlands.uti ... -
ArrayUtils
2010-07-02 11:36 1557/* Copyright aswing.org, s ... -
将数组随机排序后返回
2010-06-30 16:40 1855将数组随机排序后返回 方法一 /** * ... -
AS类中跳转
2010-06-29 10:22 1838AS类中跳转 navigate ... -
Flash与Javascript交互时可用ExternalInterface类
2010-06-29 10:17 3681Flash与Javascript交互时可用ExternalIn ... -
转载:[as hack技术]垃圾回收机强制执行
2010-06-29 09:47 1467转载:[as hack技术]垃圾回收机强制执行 http:// ... -
Flash中所支持的Html标签
2010-06-24 17:21 1411Flash中所支持的Html标签 ... -
navigateToURL()
2010-06-22 15:27 2530navigateToURL() public fun ... -
ActionScript中Http请求
2010-06-19 09:42 3175ActionScript中Http请求 因我是用MVC模式来 ... -
ActionScript字符串工具
2010-06-04 09:44 3299ActionScript字符串工具 package c ... -
加载外部SWF文件
2010-05-22 15:43 1409加载外部SWF文件 package mytest.dt { ... -
AsWing+Java上传文件
2010-05-11 09:16 1785AsWing+Java上传文件 UI是用AsWing实现比较 ... -
A*最最基础的非常非常好的寻路教程!
2010-05-08 10:01 2080最最基础的非常非常好 ... -
JTable单元格偏移
2010-05-07 11:15 1387如果Frame中有个表格JTable,且允许双击单元格编辑,那 ... -
ActionScript中日期正则表达式
2010-04-27 18:24 1309这里是判断YYYY-MM-DD这种格式的,基本上把闰年和 ... -
AS中使用JSON
2010-04-26 09:15 3028要使用json作为数据交换格式。需引入corelib Acti ... -
invalidateDisplayList
2010-03-31 14:39 1951当多次改变控件的某些属性(如 高,宽,数据)后,调用该方法以便 ...
相关推荐
在HelloScheme主类中,我们看到AsWingManager被用来初始化AsWing环境,然后创建了一个JFrame对象,这是AsWing中的窗口组件。接着创建了一个JLabel对象作为标签,并将其添加到窗口的内容面板上。设置窗口的大小,并...
Aeon皮肤是AsWing中的一个设计风格,为用户提供了一种现代、简洁的视觉体验。 在AsWing中,皮肤(Skin)是界面外观的核心组成部分,它决定了应用程序的图标、颜色方案、布局以及其他UI元素的样式。更换皮肤可以让...
【AsWing UI源码】是一个面向AS3(ActionScript 3)开发者的UI库,提供了丰富的用户界面组件和工具,旨在简化AS3中的图形用户界面(GUI)开发。这个库不仅包含了完整的源代码,还附带了GUI编辑器,方便开发者设计和...
在AsWing中,通过实现`TableCellFactory`可以自定义单元格的渲染逻辑。例如,可以创建一个`GeneralTableCellFactory`来统一管理所有单元格的渲染器。这种方式提高了代码的复用性,同时也方便了单元格样式的统一管理...
- **DragAndDrop功能**:介绍如何在AsWing中实现拖拽功能,以提高用户交互体验。 #### 11. 自定义观感 - **LookAndFeel**:指导如何定制界面的外观和感觉,使其更加符合项目的风格。 #### 12. 可视化工具Gui...
通过使用ASwing,开发者可以像在Java环境中那样,利用组件拖放、布局管理来快速搭建界面,同时保持代码的整洁和模块化。 ASwing的源代码包含在提供的压缩包中,这为开发者提供了深入学习和定制的机会。你可以查看和...
1. 熟悉ASwing的内部实现,理解组件的工作原理。 2. 自定义组件,满足特定业务需求。 3. 优化性能,例如减少内存占用,提升渲染速度。 4. 更好地集成第三方库或自有的代码。 5. 快速修复发现的问题,无需等待库的...
- **JPanel**:在AsWing中,`JPanel`扮演着一个非常重要的角色,作为容器组件,它能够容纳其他GUI组件。在设置`JPanel`时,可以通过`setOpaque(boolean opaque)`方法来控制面板是否透明。 ### 2. JWindow与AsWing...
在这个教程中,我们将深入探讨Aswing皮肤的工作原理,以及如何通过一系列步骤来设计和应用自定义皮肤。 首先,理解Aswing皮肤的基础是关键。Aswing的皮肤主要由两部分组成:外观(LookAndFeel)和组件样式...
aswing API,与AsWing Book.pdf一起使用
AS3的aswing帮助文档! AS3的程序员必备物品。。详细的介绍哦
在1.3.2这个版本中,我们可以预期开发者已经对ASwing_A3进行了大量的测试和改进,以提供更稳定、高效和易用的开发体验。 这个"allinone"的后缀可能意味着这个压缩包包含了ASwing_A3的全部组件、库、文档和示例,...
标题中的“Flash之pureMVC,aswing框架Libs文件”指的是两个主要的ActionScript库:PureMVC和AsWing。这两个库都是为在Adobe Flash环境中开发富互联网应用程序(RIA)而设计的,尤其在Flex框架下使用广泛。下面将详细...
AsWing Book.pdfAsWing Book.pdfAsWing Book.pdfAsWing Book.pdf
aswing类库的下载,可以让大家使用现成的布局来显示对象很简单很方便
ASwing,全称为ActionScript Swing,是Adobe Flex SDK中的一个组件库,用于在ActionScript 3.0项目中创建桌面应用程序。它模仿了Java Swing API的结构和功能,为Flex开发者提供了一种创建桌面GUI(图形用户界面)的...
通过分析和运行这个实例,你可以直观地看到皮肤更换的过程,并学习到如何在实际项目中实现这一功能。 此外,理解ASwing的事件处理和组件交互也是关键。皮肤更换不仅仅是改变外观,还可能涉及到组件状态的改变(如...
Swing 是 Java 标准库中用于构建图形用户界面(GUI)的一部分,而 ASwing 则是对其的一种扩展,提供了更丰富的组件、更美观的外观以及更好的可定制性,特别是对于皮肤的支持。 ASwing 1.5 特别强调了皮肤框架的使用...
在AsWing中,模型负责处理数据,视图负责显示数据,而控制器则负责处理用户交互事件,实现三者之间的协调工作。这种设计使得代码结构清晰,易于维护和扩展。 AsWing提供的组件包括但不限于按钮、文本框、列表、表格...