ci sono svariati modi, quello che di solito preferisco è il seguente:
la classe visuale (JFrame e simili) implementa l'interfaccia "ActionListener". Questa interfaccia ha un solo metodo "actionPerformed" che va necessariamente implementato. In questo metodo utilizzando o il riferimento all'oggetto che ha lanciato l'evento (nomeOggettoEvento.getSource()) o usando delle stringhe d'azione "nomeOggettoEvento.getSource().getActionCommand()) scrivi una serie di if in cascata, uno per ogni tasto o componente visuale che può lanciare l'evento 'click'.
Supponendo di usare i riferimenti agli oggetti il codice viene + o meno così:
Object src = e.getSource();
if(src == oggetto1){
// faccio qualcosa
}else if(src == oggetto2){
// faccio qualcos'altro
}else if...
...
}else if(src == tastoCheApreLaltraFinestra){
AltraFinestra f = new AltraFinestra();
f.setVisible(true); // questa istruzione è superflua se nel costruttore di AltraFinestra già la rendi visibile
}else if...
...
}