?? 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 + -