import java.awt.event.*; import java.util.*; import java.awt.*; /** En komponent, der sender en hændelse hver gang den gentegnes. * Du kan vælge at kopiere kildeteksten ind i dit eget program. * Hændelsen, der sendes er ActionEvent. Denne hændelse indeholder bl.a.: * * Du kan selvfølgelig selv bestemme hvad objektet, strengen og tallet er, * hvis det er dine egne klasser der lytter efter hændelserne. */ public class SenderActionEvent extends Component { // ---------------------------- kopier herfra ---------------------------- /** Lyttere til denne bønne */ private ArrayList lyttere = new ArrayList(2); /** Tilføjer en lytter. Lytteren vil få kaldt metoden actionPerformed() når * der sker en hændelse. * @param l Lytteren, der skal tilføjes denne komponent. */ public synchronized void addActionListener(ActionListener l) { lyttere.add(l); } /** Fjerner en lytter */ public synchronized void removeActionListener(ActionListener l) { lyttere.remove(l); } /** Sender en hændelse til lyttere. Lytterne er de, der tidligere er blevet * tilføjet med kald til addActionListener() * @see #addActionListener(ActionListener) * @param hændelse Hændelsen med de data, der skal sendes til lytterne */ protected void sendActionPerformedTilLytterne(ActionEvent hændelse) { for (Iterator i=lyttere.iterator(); i.hasNext(); ) { ActionListener l = (ActionListener) i.next(); l.actionPerformed(hændelse); } } // ---------------------------- kopier hertil ---------------------------- public void paint(Graphics g) { // opret en Action-hændelse, der kommer fra denne komponent og send den // brug konstruktøren new ActionEvent( afstanderobjekt, id, beskrivelse) ActionEvent hændelse = new ActionEvent(this, 0, "paint() kaldt"); sendActionPerformedTilLytterne(hændelse); } }