Devi aggiungere al tuo Form un MouseListener.
codice:
public class MioForm extends Frame {
   public MioForm() { // costruttore
      addMouseListener( new MouseAdapter() {
         public void mouseClicked(MouseEvent me) {
            aggiungiPulsante();
         }
      });
   }

   private void aggiungiPulsante() {
      add(bu);
      doLayout() // per far sì che il form si ridisegni.
   }
}
Questo dovrebbe essere sufficiente allo scopo, ma non sarà sicuramente chiaro per capire cosa è stato fatto e perchè.

Cominciamo col dire che quando si ha a che fare con gli eventi, bisogna aggiungere al controllo incaricato di riceverlo, un Listener appropriato. I Listener sono delle interfacce che mettono a disposizione i metodi adatti a ricevere gli eventi. Siccome le interfacce mettono a disposizione molti metodi (ad esempio, MouseListener mette a disposizione 6 metodi) essi devono essere implementati TUTTI. Per ovviare a questo sono state preconfezionate delle classi che implementano già tutti i metodi vuoti, permettendo, quindi, di poterli sottoporre ad override. Queste classi sono gli Adapter. (So che il discorso sembra alquanto oscuro, ma ci vorrebbe una trattazione solo su questo genere di classi).

Un metodo alternativo consiste nel far implementare all'oggetto stesso, l'interfaccia che serve allo scopo. In questo caso avrei potuto far implementare al Frame l'interfaccia MouseListener. Questo è un modo che ha Java per ovviare all'assenza di ereditarietà multipla e produce come effetto il fatto che il Frame sarebbe diventato un oggetto di tipo MouseListener. Detto questo, è chiaro che avrei, di conseguenza, potuto aggiungere come Listener il frame stesso ( addMouseListener(this) ). Avrei, però, dovuto implementare tutti i metodi, anche quelli che non mi interessano (implementandoli vuoti).

Spero che l'uso che ho fatto della classe anonima non sia di troppo disturbo o troppo oscura... se così fosse puoi sempre chiedere informazioni, sarò lieto di spiegarti ulteriormente la cosa. Per ora credo che sia sufficiente quanto detto.


Ciao.