Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Cursore mouse Textarea

  1. #1

    Cursore mouse Textarea

    Salve ragazzi, il mio problema è banale ma non sono riuscito a trovare come risolverlo.
    Ho implementato una piccola chat in Java.
    La TextArea dove il client inserisce il testo da inoltrare è provvista di un bottone "Send" il quale se premuto procede con l'invio del testo. Poichè è una scocciatura ho aggiunto un KeyListenee che mi permettesse di avere il medesimo effetto alla pressione del tasto invio:
    inputArea.addKeyListener(new KeyListener(){

    public void keyPressed(KeyEvent event) {
    if(event.getKeyCode()==KeyEvent.VK_ENTER && !(inputArea.getText().equals(""))){
    gestoremessaggi.sendMessage(userName, inputArea.getText());
    inputArea.setText("");
    }

    }

    public void keyReleased(KeyEvent arg0) {
    // TODO Auto-generated method stub

    }

    public void keyTyped(KeyEvent arg0) {
    // TODO Auto-generated method stub

    }

    });
    Ora il problema è che vorrei che all'invio del testo non solo la textarea si liberi del vecchio testo ma che il cursore del mouse torni all'inizio della textarea, perchè così com'è ora il cursore si sposta nella riga sottostante il vecchio testo.

    Ho provato con inputArea.setCaretPosition(0) ma non sortisce alcun effetto.

    Vi ringrazio per l'attenzione e per l'aiuto.

    Ciao

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Cursore mouse Textarea

    Originariamente inviato da UnderMaken
    Ora il problema è che vorrei che all'invio del testo non solo la textarea si liberi del vecchio testo ma che il cursore del mouse torni all'inizio della textarea
    ta.setText("");

    Questo va bene per eliminare il testo ma il fatto è che con un KeyListener puoi solo sapere che qualcosa è stato premuto ma non puoi impedirlo. Nel tuo caso, il newline viene aggiunto dopo che hai pulito la textarea.

    Invece di usare KeyListener, credo che sarebbe meglio usare un key binding, nella tua classe metti:

    codice:
    private class SendAction extends AbstractAction
    {
        public void actionPerformed (ActionEvent e)
        {
            // .... altro che vuoi fare .....
            textarea.setText ("");
        }
    }
    e poi in fase di inizializzazione della textarea:

    codice:
    Keymap km = textarea.getKeymap ();
    km.addActionForKeyStroke (KeyStroke.getKeyStroke (KeyEvent.VK_ENTER, 0), new SendAction ());
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Sei stato veloce e preciso, funziona tutto. Grazie 1000

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.