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.:
*
* - et objekt (kilden til hændelsen)
*
- en streng (beskrivelse)
*
- et tal (et ID)
*
* 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);
}
}