📄 dynamicactionadapter.java
字号:
//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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -