Poi, giusto per conoscenza, esiste anche il paradigma Observer / Observable che può esserti d'aiuto per risolvere il primo problema.
Il concetto è semplice e in Java si implementa in modo veramente limpido: hai un oggetto che ha la caratteristica di poter essere Osservato (e questo potrebbe essere la tua classe con la lista) da tanti Osservatori. Quando l'oggetto cambia, tutti gli osservatori vengono notificati di questo cambiamento (e, di conseguenza, faranno quello che devono fare in virtù del cambiamento avvenuto).

Vediamo, quindi, come potrebbe essere applicata questa "filosofia" alla tua applicazione:

Hai la tua lista di clienti (che può essere un Vector, un Array o qualunque cosa tu voglia) che è un membro (pubblico o privato non ha nessuna importanza) di una tua classe. Chiamiamo questa classe Osservato.
Poi hai l'interfaccia grafica che contiene la JList. L'interfaccia grafica è interessata a sapere quando la tua lista viene modificata (perchè un cliente viene aggiunto o tolto, o anche solo modificato, vedi tu...). Quindi l'interfaccia grafica diventa l'osservatore.
Quando la tua lista viene modificata, la classe Osservato richiamerà un metodo (notifyObservers()) e tutti gli osservatori (in questo caso solo l'interfaccia grafica) verranno notificati del cambiamento e riceveranno una copia dell'oggetto Osservato.

Per poter avere ulteriori informazioni su questo paradigma, puoi consultare la documentazione:
Observer
Observable

Ciao.