创建 listenerinterface
的实现,在该实现中,名为 listenermethodname
的方法将事件表达式的值 eventpropertyname
传递给语句中的最终方法 action
,后者被应用于 target
。其他所有侦听器方法不执行任何操作。
eventpropertyname
字符串用来从传递给目标方法的传入
iis7站长之家中提取值。一般情况下目标方法不带任何参数,在这种情况下 eventpropertyname
应该使用 null 值。此外,如果希望传入事件对象直接传递给目标方法,则应该使用空字符串。eventpropertyname
字符串的格式是一个方法或属性序列,其中从传入事件对象开始,每一个方法或属性都应用于前一个方法所返回的值。语法如下:propertyname{.propertyname}*
其中 propertyname
与方法或属性匹配。例如,要从 mouseevent
中提取 point
属性,可以使用 "point"
或 "getpoint"
作为 eventpropertyname
。要从具有 jlabel
源的 mouseevent
中提取 "text" 属性,可以使用以下值之一作为 eventpropertyname
:"source.text"
、"getsource.text"
、"getsource.gettext"
或者 "source.gettext"
。如果无法找到某个方法,或者作为调用方法的过程中生成某个异常,则在指派时将抛出 runtimeexception
。例如,如果传入事件对象为 null,且 eventpropertyname
为非 null 或非空,则将抛出 runtimeexception
。
action
参数的格式与 eventpropertyname
参数相同,其中最后一个属性名标识一个方法名或可写属性。
如果 listenermethodname
为 null
,则接口中的所有 方法都会触发将在 target
上执行的 action
。
例如,要创建一个 mouselistener
,使其在每次按下鼠标按键时,都将目标对象的 origin
属性设置为传入 mouseevent
的位置(即 mouseevent.getpoint()
的值),则应编写以下代码:
eventhandler.create(mouselistener.class, "mousepressed", target, "origin", "point");
这相当于编写一个 mouselistener
,其中除 mousepressed
以外的所有方法都是无操作:
//equivalent code using an inner class instead of eventhandler.
new mouseadapter() {
public void mousepressed(mouseevent e) {
target.setorigin(e.getpoint());
}
}
- 参数:
listenerinterface
- 要为其创建代理的侦听器接口target
- 将执行动作的对象action
- 目标上的某个(可能受限制的)属性或方法的名称eventpropertyname
- 传入事件的某个可读属性的(可能受限定的)名称listenermethodname
- 应触发该动作的侦听器接口中的方法名称
- 返回:
- 实现
listenerinterface
的对象
- 抛出:
nullpointerexception
- 如果 listenerinterface
为 null
nullpointerexception
- 如果 target
为 null
nullpointerexception
- 如果 action
为 null- 另请参见:
eventhandler