Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    456

    (java) numero massimo di caratteri in textfield

    Ciao ho provato ad impostare il numero massimo di caratteri con:
    TextField Text_superiore = new TextField("nome",20); ma non mi impedisce di scrivere dopo il 20esimo carattere.

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    L'intero che può essere passato alla TextField non riguarda il numero massimo di caratteri ma la dimensione della TextField (intesa come lunghezza orizzontale).

    Per fare in modo che la TextField non accetti nulla dopo il ventesimo carattere devi associargli un KeyListener che controlli questo vincolo.

    Dai un'occhiata ai tutorial e alla documentazione della classe KeyListener.


    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

  3. #3
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    il parametro che usi è la larghezza del campo
    se usi un JFormattedTextField con un formato che preveda al max 20 caratteri dovresbbe funz.

  4. #4
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    questa è la classe che devi usare

    codice:
    package it.vegaspa.clientFXS.businessLogic;
    
    import javax.swing.text.AttributeSet;
    import javax.swing.text.BadLocationException;
    import javax.swing.text.PlainDocument;
    
    public class PersonalizzaJtextField extends PlainDocument {
    	
    	private StringBuffer cache = new StringBuffer();
    	int lunghezzaMax;
    	
    	public PersonalizzaJtextField(int lunghezzaMax){
    		this.lunghezzaMax = lunghezzaMax;		
    	}
    	
    	public void insertString(int off, String s, AttributeSet aset) throws BadLocationException{
    		int len = getLength();			
    		if(len >= this.lunghezzaMax) { 
    			return; 
    		}			
    		cache.setLength(0);			
    		char c;			
    		for(int i = 0; i < s.length(); i++) {
    			c = s.charAt(i);				
    			cache.append(c);
    			if(cache.length() >= lunghezzaMax - len) { 						
    				break; 				
    			}			
    		}			
    		if(cache.length() > 0) {
    			super.insertString(	off, cache.toString(), aset);
    		}		
    	}
    }

    la richiami così:

    jTextField.setDocument(new PersonalizzaJtextField(numeroCaratteriDaLimitare)) ;
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Ehm... sbaglio o l'autore del post utilizza AWT??


    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

  6. #6
    Utente di HTML.it L'avatar di Brainjar
    Registrato dal
    Nov 2004
    Messaggi
    1,162
    Si, o perlomeno presumo.

    TextField è una classe java.awt.

    Ciao,
    Ciao, Brainjar

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    456
    Grazie a tutti.
    oVviamente devo anche utilizzare un "mouselistener" (esiste?? ahah) nel caso si facesse un copia ed incolla col tatso dentro no??

  8. #8
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    Originariamente inviato da LeleFT
    Ehm... sbaglio o l'autore del post utilizza AWT??


    Ciao.
    coff... coff..
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    456
    Grazie a tutti.
    Ovviamente devo anche utilizzare un "mouselistener" (esiste?? ahah) nel caso si facesse un copia ed incolla col tasto destro no??

  10. #10
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Esiste il MouseListener, ovviamente... ma penso che potresti utilizzarlo solamente per "disabilitare" l'eventuale pressione del tasto destro... per evitare che l'utente incolli più caratteri del dovuto, l'unica cosa che mi viene in mente (di rapido utilizzo) è controllare, nel momento in cui utilizzerai i dati contenuti, che la lunghezza sia rispettata, troncando eventualmente i dati ai primi 20 caratteri utilizzando il metodo substring() della classe String.


    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

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 © 2024 vBulletin Solutions, Inc. All rights reserved.