Allora:
prima creati una classe "Evento" del tipo

codice:
// aggiungi magari del codice per fare il get/set di un oggetto generico che sarà il valore che ti interessa trasportare dal dialog al frame.
public class mioEvento extends EventObject {
}

public class frame extends JFrame implements EventListener { 
public void mioEventoPerformed(mioEvento e) {
// qui dentro leggi il contenuto di mioEvento (il valore) e fai quello che devi fare
}
}

public class dialog extends JDialog {
Vector listeners = new Vector();
public void addMioEventoListener(EventListener el) {
listeners.add(el);
}
public void removeMioEventoListener(EventListener el) {
listener.remove(el);
}
public void notificaMioEvento(mioEvento ev) {
for (int i=0;i<listeners.size();i++) {
(EventListener)listeners.get(i).mioEventoPerformed(ev);
}
}
}
Quando crei il dialog, gli "registri" dentro il frame come EventListener:
codice:
frame f = new frame(...);
dialog d = new dialog(...);
d.addMioEventoListener(f);
Adesso quando vuoi passare un valore da dialog a frame, fai così (da dentro dialog):
codice:
MioEvento e = new MioEvento();
e.setValore(valore);
notificaMioEvento(e);
Facendo così tutti i listener registrati in dialog vengono avvisati del nuovo evento che hai appena creato. Il loro metodo mioEventoPerformed provvederà a gestire il valore (e.getValore()....).

Ho tirato un po' via, spero tu ci capisca qualcosa...
Ciao