
Originariamente inviata da
andbin
Innanzitutto ti faccio notate che se l'intenzione è quella di gestire il
solo tasto 'invio' sul JTextField, allora un KeyListener non è strettamente necessario. Basta un più semplice ActionListener, perché JTextField gestisce già "di serie" l'invio di un ActionEvent ogni volta che viene premuto 'invio'.
Come seconda cosa, non ho ben capito se a te serve il riferimento al JTextField che ha generato l'evento oppure se ti serve l'indice in quell'array da cui parti. Comunque spiego entrambi i casi.
Se all'interno del metodo dell'evento vuoi avere il riferimento al JTextField, questo è banale: basta prendere il "source" dell'evento con getSource() dall'oggetto XyzEvent (tutti gli oggetti di evento che estendono java.util.EventObject hanno il getSource() ).
Se ti interessa che il listener "sappia" quale è l'indice per quel JTextField, nessuno ti vieta di incapsulare l'indice nella istanza del listener, visto che hai una istanza distinta per ciascun JTextField.
(molto abbozzato)
codice:
for (int i = 0; i < .....; i++) {
final int indiceTmp = i;
// ......
espressionePerTextField.addXyzListener(new XyzListener() {
private int indice = indiceTmp;
public void metodoDelListener() {
// usa indice
}
});
}