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

    JAVA --- Aiuto con JFormattedTextField

    Come posso creare una JFormattedTextField che accetti solo interi in un determinato range.

  2. #2
    Ti posto l codice di una classe che non fa quello che ti serve ma ti fa capire come fare per otterlo.In pratica di basta derivare na classe da Jtextfield e subclassare anche la sua classe interna plainDocument che si occupa di gestirne l'input.

    codice:
    //------------------------------------------------------------------------
    //  Semplice estensione della JTextField con due semplici features 
    //  aggiuntive:
    //
    //  1) consentire di limitare il numero di massimo di caratteri inseribili
    //     (cut and paste compresi)
    //  2) introdurre un set di caratteri vietati da passare come semplice 
    //     parametro String al costruttore
    //------------------------------------------------------------------------
    public class MyJTextField extends JTextField
    {
    	private int limit;
    	private String charSet;
    	public MyJTextField(int limit,String charSet)
    	{
    		super();
    		this.limit=limit;
    		this.charSet=charSet;
    		setDocument(new TextLimitDocument(limit,charSet));
    	}
    	public MyJTextField(String charSet)
    	{
    		super();
    		limit=-1;
    		this.charSet=charSet;
    		setDocument(new TextLimitDocument(limit,charSet));
    	}
    	public MyJTextField(int limit)
    	{
    		super();
    		this.limit=limit;
    		charSet=null;
    		setDocument(new TextLimitDocument(limit,charSet));
    	}
    	public MyJTextField()
    	{
    		super();
    		limit=-1;
    		charSet=null;
    		setDocument(new TextLimitDocument(limit,charSet));
    	}
    	public void setLimit(int limit)
    	{
    		this.limit=limit;
    		setDocument(new TextLimitDocument(limit,charSet));
    	}
    	public void setCharSet(String charSet)
    	{
    		this.charSet=charSet;
    		setDocument(new TextLimitDocument(limit,charSet));
    	}
    	public int getLimit()
    	{
    		return limit;
    	}
    	public String getCharSet()
    	{
    		return charSet;
    	}
    
        
        
        //----------------------------------------------------
        //Classe interna per la gestione dell'input
        //----------------------------------------------------
        
        public class TextLimitDocument extends PlainDocument 
        {
       		private int limit;
       		private String charSet;
       
        
       		TextLimitDocument(int limit, String charSet) 
       		{
        		super();
        		this.limit = limit;
        		this.charSet=charSet;
        	}
      
       		public void insertString(int offset, String  str, AttributeSet attr)throws BadLocationException 
       		{
        		if (str == null) return;
          		if(limit!=-1)
          		{
          			if(charSet!=null)
          			{
          				if ((getLength() + str.length()) <= limit) 
        				{
          					char[] source = str.toCharArray(); 
          					String dest=new String();
          					for(int i=0;i<str.length();i++)
          						if(charSet.indexOf(source[i])==-1)
          							dest=dest+source[i];
          					super.insertString(offset, dest, attr);
          				}
          			}
          			else
          				if ((getLength() + str.length()) <= limit) 
          					super.insertString(offset, str, attr);
          		}
          		else
          		{
          			if(charSet!=null)
          			{
          				char[] source = str.toCharArray(); 
          				String dest=new String();
          				for(int i=0;i<str.length();i++)
          					if(charSet.indexOf(source[i])==-1)
          						dest=dest+source[i];
          				super.insertString(offset, dest, attr);
          			}
          			else
          				super.insertString(offset, str, attr);
          		}
          	}
    	}
    }
    spero ti sia utile ciao
    Il centro dell'attenzione non č sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  3. #3
    Utente di HTML.it L'avatar di MMarzia
    Registrato dal
    Mar 2001
    Messaggi
    1,781
    ho modificato il titolo
    io sono festosamente cicciottello :: e. cartman

    t'amo senza sapere come, nč quando nč da dove,
    t'amo direttamente senza problemi nč orgoglio:
    cosė ti amo perchč non so amare altrimenti

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.