创建 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