Estes dias com a ajuda de @staroski ele fez esta classe:
import java.awt.Color;
import javax.swing.JTextField;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.text.DefaultStyledDocument;
import softmoby.com.br.Teste.DocumentSizeFilter;
public class Tamanho_campo {
private class UpdateListener implements DocumentListener {
final JTextField textField;
final DefaultStyledDocument doc;
final int minimo;
final int maximo;
public UpdateListener(JTextField textField, DefaultStyledDocument doc, int minimo, int maximo) {
this.textField = textField;
this.doc = doc;
this.minimo = minimo;
this.maximo = maximo;
}
@Override
public void changedUpdate(DocumentEvent e) {
updateCount();
}
@Override
public void insertUpdate(DocumentEvent e) {
updateCount();
}
@Override
public void removeUpdate(DocumentEvent e) {
updateCount();
}
private void updateCount() {
int quantidade = doc.getLength();
if (minimo > quantidade) {
textField.setBackground(Color.LIGHT_GRAY);
int precisa = quantidade - minimo;
textField.setToolTipText("Precisa mais " + precisa + " caracteres");
}
if (minimo <= quantidade) {
int restam = maximo - quantidade;
textField.setToolTipText("Restam " + restam + " caracteres");
textField.setBackground(Color.WHITE);
}
}
};
public void tratarJTextField(int minimo, int maximo, JTextField textField) {
DefaultStyledDocument doc = new DefaultStyledDocument();
doc.setDocumentFilter(new DocumentSizeFilter(maximo));
UpdateListener updateListener = new UpdateListener(textField, doc, minimo, maximo);
doc.addDocumentListener(updateListener);
textField.setDocument(doc);
updateListener.updateCount();
}
}
Gostaria de saber se tem como verificar o tipo de texto que vai receber com algo parecido assim só não consigo implementar:
`
private void jTextFieldKeyTyped(KeyEvent evt) {
String caracteres="";
switch (tipo) {
case "N":
caracteres="0987654321.";
break;
case "v":
caracteres="aeiou.";
break;
default:
}
if(!caracteres.contains(evt.getKeyChar()+"")){
evt.consume();
}
if((getText().length()>=getMaximoCaracteres())&&(getMaximoCaracteres()!=-1)){
evt.consume();
setText(getText().substring(0,getMaximoCaracteres()));
}
}
`