Ovviamente, invocare setText() non comporta la pressione di alcun tasto.
Una soluzione, banale, è quella di spostare tutto il codice che c'è all'interno del keyPressed() in un metodo (chiamiamolo "pippo()"). Il keyPressed() invocherà pippo() e lo stesso verrà fatto programmaticamente dopo l'invocazione di setText():
codice:
// Nel KeyListener
public void keyPressed(KeyEvent ke) {
if(e.getKeyCode() == KeyEvent.VK_ENTER){
pippo();
}
}
// Programmaticamente, dopo il setText:
miaTextField.setText( ... );
pippo();
Ovviamente, il KeyListener ed il codice che invoca setText() devono, in qualche modo, avere visibilità sul metodo pippo().
L'alternativa consiste nel sollevare programmaticamente l'evento e notificarlo a tutti i listener registrati.
codice:
KeyEvent ke = new KeyEvent(miaTextField, ...);
for(KeyListener ke : miaTextField.getKeyListeners() {
ke.keyPressed( ke );
}
Ciao.