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