java flex 被替代,Java与Flex区别一:使用自定义事件

Java和Flex都支持自定义事件,但是在使用上还是有些区别。 注:本文仅讨论如何在Java和Flex中分别添加一个自定义事件,暂不讨论Flex的事件机制。 Java 在Java中,如果一个类需要发布自定义事件,通常需要如下步骤: 1. 创建一个自定义Listener的接口,比如 1: public interface IListener {

2: public void onValueChange();

3: }

2. 在发布事件的那个类中,提供管理listener的功能,包括,

一个保存listener的容器,通常使用ArrayList,

添加和移除listener的方法,addListener/removeListener,

内部通知listener的相关代码

注:当然也可以继承自java.util.Observable. 但是Java不支持多继承,如果你的类正好需要继承自另外一个类,那就不行了。个人还是喜欢自己去管理这些listener,这样addListener/removeListener这些方法的名字可以取的更加具体,以增强可读性。

3. 在需要处理事件的类实现对应的Listener接口,并将其注册到发布事件的类的对象上(通过调用其addListener方法)。

Flex

在Flex中增加一个新的事件,通常需要如下步骤:

1. 创建一个自定义的事件类,该类继承自flash.events.Event,比如

1: package mypackage

2: {

3: import flash.events.Event;

4:

5: public class ValueChangedEvent extends Event

6: {

7: // event name

8: public static const VALUE_CHANGED:String = "valueChanged";

9: public var value:Number; // customized filed for the event

10:

11: public function ValueChangedEvent(type:String, newValue:Number)

12: {

13: super(type);

14: this.value = newValue

15: }

16:

17: override public function clone():Event {

18: return new ValueChangedEvent(type, value);

19: }

20: }

21: }

2. 在需要发布事件的组件里面,创建一个事件的metadata标签,这样Flex Builder就能自动提示该组件支持这个事件。

比如,在action script里面:

1: [Event(name="valueChange", type="mypackages.ValueChangeEvent")]

2: public class MyComponent extends TextArea

3: {

4: ...

5: }

6:

在mxml里面:

1:

2: [Event(name="valueChanged", type="

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值