Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    Resettare una JTextarea

    Salve,

    sto cercando di capire com'è possibile resettare il contenuto di una textarea in seguito ad un input (di testo) da parte dell'utente e come far tornare il puntatore del mouse nella textarea stessa!

    Sfogliando le API di java ho trovato due metodi mediante i quali è possibile resettare parzialmente oppure totalmente il contenuto di una textarea:

    setText(null);
    replaceRange(null, 0, input.length());

    Applicando entrambi i metodi non ho raggiunto il risultato che speravo, in quanto il puntatore del mouse non torna nella textarea e nel momento in cui riporto il puntatore del mouse al suo interno è come se la textarea contenesse la prima riga vuota!

    Spero qualcuno ci sappia fare con le JTextarea!

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

    Re: Resettare una JTextarea

    Originariamente inviato da VincenzoTheBest
    setText(null);
    Va bene sia passare null che "".
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    L'effetto è lo stesso..

  4. #4
    Nessuno ha qualche suggerimento o qualche ottima soluzione alternativa?

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da VincenzoTheBest
    Nessuno ha qualche suggerimento o qualche ottima soluzione alternativa?
    Per quale problema, scusa?? Non capisco .... se azzeri il contenuto della textarea il "caret" (sarebbe quella barretta verticale che indica il punto di inserimento nel testo) sta solo in alto a sinistra e basta.

    Vuoi ridare il focus alla textarea?? Allora invoca requestFocusInWindow().
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Il caret non torna nella textarea! devo re-cliccarci sopra per far tornare la barretta verticale in essa!

    Il metodo che mi hai passato non risolve il problema..

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Originariamente inviato da VincenzoTheBest
    Il metodo che mi hai passato non risolve il problema..
    Se magari posti qualche righetta di codice, sarebbe un po' più semplice trovare dove sbagli... perchè di sicuro sbagli qualcosa: requestFocusInWindow() serve proprio per ridare il focus ad un componente...


    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

  8. #8
    La parte che può interessarti è la seguente:
    Codice PHP:

    final JTextArea inText = new JTextArea(348);

    ...

    class 
    Tasto implements KeyListener
    {
          public 
    void keyPressed(KeyEvent e)
          {
              
    int pressione e.getKeyCode();
              
    String toSend;
              
    PrintStream sendTo = new PrintStream(new   BufferedOutputStream(socket.getOutputStream()), false);

              if(
    pressione==10)
              {
                   
    toSend=inText.getText();
                   
    sendTo.println(toSend);
                    
                   
    inText.setText("");
                   
    inText.requestFocusInWindow(); ????
               }
           }

           public 
    void keyTyped..

           public 
    void keyReleased..
    }

    ... 

  9. #9
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Io ho replicato il tuo esempio (ovviamente ridotto, non avendo Socket aperte, ecc.). Questo è il codice e funziona alla perfezione:

    codice:
    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
    
    public class Focus extends JFrame {
    
       private class MioKey extends KeyAdapter {
          public void keyPressed(KeyEvent ke) {
             if ( ke.getKeyCode() == 10) {
                azzeraTutto();
             }
          }
       }
    
       private JTextArea txtArea;
       private JTextField txtField;
    
       public Focus() {
          Container c = getContentPane();
          c.setLayout( null );
    
          txtArea = new JTextArea();
          txtArea.setBounds(10, 10, 150, 80);
    
          txtField = new JTextField();
          txtField.setBounds(10, 110, 150, 20);
          txtField.addKeyListener( new MioKey() );
    
          c.add( txtArea );
          c.add( txtField );
    
          setSize(500, 400);
          setTitle("Text Areas");
          setResizable( false );
          setDefaultCloseOperation( EXIT_ON_CLOSE );
          setVisible( true );
       }
    
       private void azzeraTutto() {
          txtArea.setText("");
          txtArea.requestFocusInWindow();
       }
    
       public static void main(String[] args) { 
          Focus f = new Focus();
       }
    }
    Prova a confrontare con il tuo e cercare di capire quale possa essere il motivo... controlla anche che non vengano generate eccezioni sul terminale (dal codice che hai postato del metodo keyPressed, che immagino sia stato ridotto, non sembri utilizzare i try/catch, nonostante tu faccia uso di Socket e PrintStream)...


    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

  10. #10
    Ok Funziona, ma l'esempio mi serve solo sulla textarea in quanto vorrei che funzionasse come la textarea di una chat!


    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;

    public class Prova extends JFrame {

    private class MioKey extends KeyAdapter
    {
    public void keyPressed(KeyEvent ke)
    {
    if ( ke.getKeyCode() == 10)
    {
    azzeraTutto();
    }
    }
    }

    private JTextArea txtArea;
    private JTextField txtField;

    public Prova()
    {
    Container c = getContentPane();
    c.setLayout( null );

    txtArea = new JTextArea();
    txtArea.setBounds(10, 10, 150, 80);

    //txtField = new JTextField(); NON SERVE
    //txtField.setBounds(10, 110, 150, 20);
    //txtField.addKeyListener( new MioKey() ); NO

    txtArea.addKeyListener(new MioKey()); //SI

    c.add( txtArea );
    //c.add( txtField );

    setSize(500, 400);
    setTitle("Text Areas");
    setResizable( false );
    setDefaultCloseOperation( EXIT_ON_CLOSE );
    setVisible( true );
    }

    private void azzeraTutto() {
    txtArea.setText("");
    txtArea.requestFocusInWindow();
    }


    public static void main(String[] args)
    {
    Prova f = new Prova();
    }
    }

    Cmq nel codice che ti ho postato prima, ho dimenticato di mettere all'esterno il gestore di eccezioni (nell'originale c'è).

    Probabilmente nella mia applicazione il focus non torna nella textarea in quanto dopo un input, l'applicazione riceve dal server la stringa e la visualizza in un pannello del frame!

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.