Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    35

    [JTextArea] numero dei caratteri inseriti

    Ciao ragazzi. Sto usando una JTextArea. Vorrei affidare ad un contatore il compito di contare il numero dei caratteri inseriti e vorrei che li mostri in tempo reale.
    Per far ciò stò usando questo pezzo di codice

    codice:
    class LimitDocument extends PlainDocument
    		{
    		 
    		private static final long serialVersionUID = 1L;
    		int limit;
    		 
    		 public LimitDocument(int limit)
    		 {
    		  this.limit = limit;
    		 }
    		 
    		 public void insertString(int offset, String s, AttributeSet a) throws BadLocationException 
    		 {
    			 
    			 
    		  
    			 if (offset + s.length() <= limit)
    			 {
    				 super.insertString(offset,s,a);
    				 System.out.println("Caratteri inseriti: "+(offset+1));
    		
    				
    				 
    			 }
    		   
    		  else
    		   Toolkit.getDefaultToolkit().beep();
    			 
    			 
    		 } 
    		}
    Solo che se viene cancellato un carattere, il conteggio non viene subito visualizzato ma solo dopo l'inserimento di un nuovo carattere. Come posso far aggiornare il contatore appena viene cancellato un carattere?

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

    Re: [JTextArea] numero dei caratteri inseriti

    Originariamente inviato da slack85
    Per far ciò stò usando questo pezzo di codice
    A parte che non è affatto il massimo .... ipotizza un document inizialmente vuoto con il tuo limit a 10, se qualcuno fa un "paste" (incolla) di 12 caratteri tu lo ignori completamente!!! (mentre a rigor di logica dovresti aggiungerne 10).

    L'esempio corretto e valido è sul mio Java Examples sezione text components (vedi firma).

    Originariamente inviato da slack85
    Solo che se viene cancellato un carattere, il conteggio non viene subito visualizzato ma solo dopo l'inserimento di un nuovo carattere.
    Document ha anche remove(), quindi il linea di massima dovresti fare l'override anche di quello (e fai passare tutto a super.remove() senza toccare nulla).

    Comunque si può anche (e forse è più generico e indipendente dal Document) registrare un DocumentListener in modo da ricevere notifica dopo ogni modifica al document.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.