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…
[code]/*
- 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 charif (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);
}
}
}[/code]