Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [JAVA] JTextArea e EnterTextListener !?

    Salve a Tutti....
    volevo chiedere se è possibile associare EnterTextListener ad una JTextArea.
    Ho questo action
    codice:
    class EnterTextListener implements ActionListener {
    		public void actionPerformed(ActionEvent evt) {
    
    ........
    
                    }
    }
    Assegnato ad un JTextLabel funziona, mentre
    codice:
    myTextArea.addActionListener(new EnterTextListener());
    assegnato ad una JTextArea mi da errore!!

    Come posso catturare l'evento ENTER della tastiera sulla JTextArea!?

    Grazie a Tutti

  2. #2
    hai provato con i keylistner?

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,326
    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.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    Grazie per l'attenzione, dunque inizio con il correggermi e chiarire meglio la situazione....

    1) si tratta di JTextField e non JTextLabel, scusate
    2) "EnterTextListener" è, giustamente, il nome della classe implements ActionListener che cattura sui JTextField la pressione del tasto ENTER, che come mi ha giustamente spiegato LeleFT non può essere catturato su una JTextArea.

    Dunque la questione è questa.... ho vari JTextField su cui l'utente digita alcune informazioni, questi JTextField sono su setEditable(false); tranne il primo. Scritti i dati richiesti sul primo l'utente preme su ENTER e vengono svolti alcuni test sui dati inseriti, se questi soddisfano determinate condizioni il successivo campo JTextField viene posto su setEditable(true); e riceve il focus e così via sino al campo del JTextArea dove il tipo di dati da inserire è del testo "lungo", cioè sarebbero delle annotazioni.
    Detto ciò, come posso far partire il test sul testo scritto e quindi rendere cliccabile il JButton che da il definitivo avvio all'archiviazione dei dati inseriti!?

    PS: se a me non interessa che nel testo inserito nella JTextArea si mandi "a capo" il testo, ma piuttosto che si scriva su una sola riga, anche se poi graficamente nella JTextArea il testo viene automaticamente disposto su più righe, posso assegnare al tasto ENTER lo stesso codice di controllo che uso per i JTextField.... e così il caso è risolto!!

    GRAZIE a Tutti per l'interessamento e l'aiuto ... ciao

  5. #5
    Ok.. testato il codice.... funzione bene, GRAZIE

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.