当然可以,java的接口可以实现。
呵呵,比vb、vc的函数回调高明多了。

解决方案 »

  1.   

    逻辑上参考这里:
    http://www-900.ibm.com/developerWorks/cn/java/jw-tips/tip010/index.shtml
      

  2.   

    you can create your own customized EventListener extends EventListener interface in java.util.*;This method is anyhow more advanced in architecture,  I think.
      

  3.   

    //Step 1: Create your customized Event//file: OkButtonActionPerformedEvent.javaimport java.util.*;public class OkButtonActionPerformedEvent extends EventObject {   public OkButtonActionPerformedEvent(Object source) {
          super(source);
       }
    }
      

  4.   

    //Step 2: Create your customized Listener
    //file: OkButtonActionPerformedListenerimport java.util.*;public interface OkButtonActionPerformedListener extends EventListener {   public void okButtonActionPerformed(OkButtonActionPerformedEvent e);
    }
      

  5.   

    //Step 3: Throw your customized Event in your specific location
    //file: TRToolBar.javaimport java.awt.*;
    import java.awt.event.*;
    import java.util.*;public class TRToolBar extends TRPanel
    {
        public synchronized void removeOkButtonActionPerformedListener(OkButtonActionPerformedListener l) {
            if(okButtonActionPerformedListeners != null && okButtonActionPerformedListeners.contains(l)) {
                Vector v = (Vector) okButtonActionPerformedListeners.clone();
                v.removeElement(l);
                okButtonActionPerformedListeners = v;
            }
        }    public synchronized void addOkButtonActionPerformedListener(OkButtonActionPerformedListener l) {
            Vector v = okButtonActionPerformedListeners == null ? new Vector(2) : (Vector) okButtonActionPerformedListeners.clone();
            if(!v.contains(l)) {
                v.addElement(l);
                okButtonActionPerformedListeners = v;
            }
        }    protected void fireOkButtonActionPerformed(OkButtonActionPerformedEvent e) {
            if(okButtonActionPerformedListeners != null) {
                Vector listeners = okButtonActionPerformedListeners;
                int count = listeners.size();
                for (int i = 0; i < count; i++) {
                    ((OkButtonActionPerformedListener) listeners.elementAt(i)).okButtonActionPerformed(e);
                }
            }
        }    void buttonOk_actionPerformed(ActionEvent e) {
            this.fireOkButtonActionPerformed(new OkButtonActionPerformedEvent(buttonOk));
        }    ...
    }
      

  6.   

    //Step 4: Register the listener in proper location:public class MainFrame extends JFrame {
       TRToolBar toolbar = new TRToolBar();
       public MainFrame() {
          ...
          toolbar.addOkButtonActionPerformedListener(new OkButtonActionPerformedListener() {
             public void okButtonActionPerformed(OkButtonActionPerformedEvent e) {
                System.out.println("ToolBar okButtonActionPerformed");
             }
          });
       }
    }
      

  7.   

    //Addition to Step 3
    //Sorry. I forgot a important variable declaration in TRToolBar.javaprivate transient Vector okButtonActionPerformedListeners;