Se l'ActionListener è in una classe esterna a quella dove c'è il campo di istanza per il JTextField, ci sono diverse possibilità per ottenere testo (o altro del JTextField) nel actionPerformed.
1) Passare al ActionListener (da costruttore, tipicamente) il riferimento al JTextField. Questo non è sbagliato o "brutto". Dipende molto anche dal concetto dell'uso di tale JTextField.
2) Passare al ActionListener (idem, costruttore) il riferimento alla classe che incapsula il JTextField e fare in modo da offrire un metodo pubblico che o ritorna direttamente il JTextField (meno bello) oppure il testo o altro dato necessario (più bello). Ma non esporre direttamente il campo!
3) Passare al ActionListener un oggetto che implementa una interfaccia che permette di disaccoppiare il listener dal resto. La interfaccia potrebbe avere metodi es. getTesto() e/o qualunque altra cosa. Il punto è che al listener non interessa come/dove è implementata.


Rispondi quotando