class LongTextDoc extends PlainDocument{
private static final long serialVersionUID = -666L;
private int maxLenght;
public void insertString(int poz,String str,AttributeSet a)throws BadLocationException{
if (str!=null&&getLength()<maxLenght){
String stary=getText(0,getLength());
String nowy=(stary.substring(0,poz)+str+stary.substring(poz));
if (check(nowy)){
super.insertString(poz,str,a);
}
}
}
private boolean check(String s){
return s.matches("^\\d+$");
}
public void setMaxLenght(int m){maxLenght=m;}
}
/**
* JTextFiled przyjmujacy jedynie liczby calkowite
*
*/
class LongTextField extends JTextField{
private static final long serialVersionUID = -69L;
public LongTextField(String s,int size,final int maxSize){
super(s,size);
doc.setMaxLenght(maxSize);
}
protected Document createDefaultModel(){
doc=new LongTextDoc();
return doc;
}
public long getLongValue(){
try{
return Long.parseLong(getText());
}catch(NumberFormatException e){
return -1;
}
}
private LongTextDoc doc;
}
///////////////////////////////////////////////////////////////////////////LUB:
class Validator implements DocumentListener{
private int lenght;
private Color inactiveColor;
private Color defaultColor;
private JTextComponent target;
public Validator(JTextComponent aTarget,int aLength){
lenght=aLength;
target=aTarget;
inactiveColor=UIManager.getColor("JTextField.textBackground");
defaultColor=aTarget.getBackground();
validateField();
}
public void insertUpdate(DocumentEvent e) {
validateField();
}
public void removeUpdate(DocumentEvent e) {
validateField();
}
public void changedUpdate(DocumentEvent e) {
validateField();
}
public void validateField(){
if (!target.isEditable())
target.setBackground(inactiveColor);
else if ((target.getText()==null||target.getText().length()<lenght))
target.setBackground(new Color(255,150,150));
else
target.setBackground(defaultColor);
}
}
class ValidatedTextField extends JTextField{
private static final long serialVersionUID = 7344063624729814107L;
private Validator validator;
public ValidatedTextField(String s,int l,int minLenght){
super(s,l);
validator=new Validator(this,minLenght);
getDocument().addDocumentListener(validator);
}
public void setEditable(boolean b){
super.setEditable(b);
if (validator!=null)
validator.validateField();
}
}
pozdrawiam