you can create your own customized EventListener extends EventListener interface in java.util.*;This method is anyhow more advanced in architecture, I think.
//Step 1: Create your customized Event//file: OkButtonActionPerformedEvent.javaimport java.util.*;public class OkButtonActionPerformedEvent extends EventObject { public OkButtonActionPerformedEvent(Object source) { super(source); } }
//Step 2: Create your customized Listener //file: OkButtonActionPerformedListenerimport java.util.*;public interface OkButtonActionPerformedListener extends EventListener { public void okButtonActionPerformed(OkButtonActionPerformedEvent e); }
//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)); } ... }
//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"); } }); } }
//Addition to Step 3 //Sorry. I forgot a important variable declaration in TRToolBar.javaprivate transient Vector okButtonActionPerformedListeners;
http://www-900.ibm.com/developerWorks/cn/java/jw-tips/tip010/index.shtml
super(source);
}
}
//file: OkButtonActionPerformedListenerimport java.util.*;public interface OkButtonActionPerformedListener extends EventListener { public void okButtonActionPerformed(OkButtonActionPerformedEvent e);
}
//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));
} ...
}
TRToolBar toolbar = new TRToolBar();
public MainFrame() {
...
toolbar.addOkButtonActionPerformedListener(new OkButtonActionPerformedListener() {
public void okButtonActionPerformed(OkButtonActionPerformedEvent e) {
System.out.println("ToolBar okButtonActionPerformed");
}
});
}
}
//Sorry. I forgot a important variable declaration in TRToolBar.javaprivate transient Vector okButtonActionPerformedListeners;