dynamicactionadapter.java
来自「learning java的源代码。书中每个实例都有相关的代码example。」· Java 代码 · 共 50 行
JAVA
50 行
//file: DynamicActionAdapter.javaimport java.awt.*;import java.util.Hashtable;import java.lang.reflect.Method;import java.awt.event.*;class DynamicActionAdapter implements ActionListener { Hashtable actions = new Hashtable( ); public void hookup( Object sourceObject, Object targetObject, String targetMethod ) { actions.put(sourceObject, new Target(targetObject, targetMethod)); invokeReflectedMethod( sourceObject, "addActionListener", new Object[] {this}, new Class[] {ActionListener.class}); } public void actionPerformed(ActionEvent e) { Target target = (Target)actions.get( e.getSource( ) ); if ( target == null ) throw new RuntimeException("unknown source"); invokeReflectedMethod(target.object, target.methodName, null, null); } private void invokeReflectedMethod( Object target, String methodName, Object [] args, Class [] argTypes ) { try { Method method = target.getClass( ).getMethod( methodName, argTypes ); method.invoke( target, args ); } catch ( Exception e ) { throw new RuntimeException("invocation problem: "+e); } } class Target { Object object; String methodName; Target( Object object, String methodName ) { this.object = object; this.methodName = methodName; } }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?