Uma classe para JText interessante

0 respostas
jonasjgs2

gente com a ajuda de vcs aqui
consegui criar uma classe que acho muito boa principalmente
para quem esta comecando
a classe e simples
porem ela tem alguns parametros para o jtext
como o tipo do text que sera coletado
ou seja se e uma string, se e um numero, quantidade de inteiros, quantidade de decimais,
se so vai aceitar maiuscula, se so vai aceitar minuscula
em fim
ficou muito legal

e como eu tive bastante a ajuda do pessoal aqui
resolvi disponibiliza-la para todos...

para usar esta classe
que pode ser utilizada para qualquer campo JText
vc deve fazer o seguinte:

DefineCampo doc = new DefineCampo("Numero",10,3,".");
jTextExemplo.setDocument(doc);

funciona e e muito legal
facam um bom uso...

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
/**
 *
 * @author Jonas
 */
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;

/**
 *
 * @author Jonas
 */
public class DefineCampo extends PlainDocument {

    /*
     * Wtipo = StrUpper -> string aceitando apenas maiusculas
     *       = StrLower -> string aceitando apenas minusculas
     *       = String   -> aceitando qualquer string
     *       = Numero   -> so aceita numeros
     * 
     * wmaxcols = numero de colunas ou numero total de inteiros em caso de numero
     * 
     * wqtddec  = em caso de numero e a quantidade de decimais
     * 
     * wtipochardec = caracter separador de decimais ("," our ".")
     * 
     */
    String wtipo;
    int wmaxcols;
    int wqtdint;
    int wqtddec;
    String wtipochardec;
    String stratu;

    public DefineCampo(String tipo, int maxcols, int qtddec, String tipochardec) {
        wtipo = tipo;
        wmaxcols = maxcols;
        wqtdint = maxcols;
        wqtddec = qtddec;
        wtipochardec = tipochardec;
        if (wtipo.equals("Numero")) {
            wmaxcols = maxcols + qtddec;
            if (qtddec != 0) {
                wmaxcols = wmaxcols + 1; //devido ao ponto decimal
            }
        }
    }

    public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
        stratu = getText(0, getLength()); // pegando a string antes do prox char

        if (str == null) {
            return;
        }

// se ja chegou ao numero maximo de caracteres nao aceitar mais nenhum

        if (getLength() == wmaxcols) {
            return;
        }

// se for numero

        if (wtipo.equals("Numero")) {
            // se o campo for numero e a quantidade de decimais igual a zero
            // nao permitir a digitacao de "." ou "," decimal

            if (wqtddec == 0) {
                if (str.equals(".") || str.equals(",")) {
                    return;
                }
            }
            if (!Character.isDigit(str.charAt(0)) && !str.equals(wtipochardec)) {
                return;
            }
            // nao permitir digitar tipo de caractere separador de decimais
            // repetidos se o campo for numerico ou qtddecimais <> 0
            if (str.equals(wtipochardec)) {
                if (wqtddec != 0) {
                    for (int i = 0; i < getLength(); i++) {
                        if (wtipochardec.charAt(0) == getText(0, getLength()).charAt(i)) {
                            return;
                        }
                    }
                }
            }
            // verificando quantidade de inteiros
            if (!stratu.contains(wtipochardec)
                    && (!str.equals(wtipochardec))) {
                if (stratu.length() != 0) {
                    for (int i = 0; i < stratu.length(); i++) {
                        if (Character.isDigit(stratu.charAt(i))) {
                            if ((i + 1) == wqtdint) {
                                return;
                            }
                        } else {
                            break;
                        }
                    }
                }
            }
            if (stratu.contains(wtipochardec)) {
                int b = 0;
                boolean x = false;
                for (int i = 0; i < stratu.length(); i++) {
                    int u;
                    u=i+1;
                    if (wtipochardec.equals(stratu.substring(i,u))){
                        x = true;
                    } else {
                        if (x) {
                            b++;
                            if (b == wqtddec) {
                                return;
                            } 
                        }
                    }
                }
            }

            super.insertString(offs, str, a);
            return;
        }

        if (wtipo.equals("String")) {
            super.insertString(offs, str, a);
        }

        if (wtipo.equals("StrUpper")) {
            String st;
            st = str.toUpperCase();
            str = st;
            super.insertString(offs, str, a);
        }

        if (wtipo.equals("StrLower")) {
            String st;
            st = str.toLowerCase();
            str = st;
            super.insertString(offs, str, a);
        }
    }
}
Criado 4 de novembro de 2011
Respostas 0
Participantes 1