1) Cosa sono "EnterTextListener" e "JTextLabel"?
2) JTextArea (per ovvi motivi) non prevede il metodo addActionListener, quindi non ci si può associare un ActionListener. JTextArea è un componente "complesso": funziona secondo il modello di programmazione Document. Essa contiene, appunto, un Document che è responsabile del trattamento dei dati visualizzati e introdotti nella JTextArea. Se si vuole poter far fare qualcosa di diverso al pulsante ENTER in una JTextArea bisogna aggiungere un nuovo KeyStroke al default per l'ENTER.
codice:
// Ottengo il KeyMap della mia JTextArea
Keymap km = textArea.getKeymap();
// Aggiungiamo una nuova azione per il tasto ENTER
// ATTENZIONE: il tasto ENTER d'ora in avanti farà quello che io gli dico
km.addActionForKeyStroke(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), new MiaAzioneEnter());
La classe MiaAzioneEnter sarà qualcosa del genere:
codice:
class MiaAzioneEnter extends TextAction {
public MyEnterAction() {
super("Mia_Azione_Enter"); // Diamo un nome all'azione
}
public void actionPerformed(ActionEvent e) {
// Otteniamo la JTextArea "source" dell'evento
JTextArea textArea = (JTextArea) getTextComponent(e);
... // Fai quello che vuo alla pressione del tasto ENTER
}
}
Ciao.