Olá denovo venho pedir encarecidamente como limitar os caracteres em um jformattedTextfield, nas propriedades eu não consegui indico o valor ele automaticamente retorna ao 0, nem mesmo usando a mesma função de limitar que utilizei no jtextfield
RESOLVIDO - Limitar caracteres em JFormattedTextField
G
4 Respostas
Cara dá uma olhada nisso
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.IOException;
import javax.swing.JFrame;
import javax.swing.JTextField;
class Class3 extends JFrame {
JTextField f = new JTextField();
public Class3() {
this.setVisible(true);
add(f);
f.addKeyListener(new KeyListener() {
public void keyTyped(KeyEvent e) {
String texto = f.getText();
if(texto != null && texto.length() == 10) {
e.consume();
}
}
public void keyPressed(KeyEvent e) {
}
public void keyReleased(KeyEvent e) {
}
});
setVisible(true);
pack();
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args) throws IOException {
new Class3();
}
}
G
essa é a única forma ??? 
essa é a forma que eu estou usando e dai na declaração do componente eu uso ela e acho uma forma elegante de se fazer o código
public class LimitadorTexto extends PlainDocument
{
private int limite = 0;
public LimitadorTexto(int l)
{
this.limite = l;
}
public void insertString(int offs, String str, AttributeSet a) throws BadLocationException
{
int sobra = limite - getLength();
int comprimento = ( sobra > str.length() ) ? str.length() : sobra;
super.insertString(offs, str.substring(0, comprimento), a);
}
}
mas o formattedtextfield na sua declaração não é instânciavel a mascara ##/##/#### seria uma solução
G
esteé a forma que estou fazendo porém não está dando mais certo
public void FormataCampoData(JFormattedTextField Componente) {
try
{
MaskFormatter FormatoData = new MaskFormatter("##/##/####");
FormatoData.install((JFormattedTextField)Componente);
jftData = (JFormattedTextField)Componente;
Componente.addFocusListener(new FocusAdapter() {
JFormattedTextField bbb = jftData;
public void focusLost(FocusEvent e) {
if(bbb.getText().equals(" / / ")==false){
String[] strData = getData().split("/");
String[] strDataDigitada = bbb.getText().split("/");
String[] texto = new String[]{"","",""};
if(strDataDigitada[0].equals("") || strDataDigitada[0].equals(" ") || strDataDigitada[0].equals(" ")){
texto[0] = strData[0];
}else{
texto[0] = strDataDigitada[0];
}
if(strDataDigitada[1].equals("") || strDataDigitada[1].equals(" ") || strDataDigitada[1].equals(" ")){
texto[1] = strData[1];
}else{
texto[1] = strDataDigitada[1];
}
if(strDataDigitada[2].equals("") || strDataDigitada[2].equals(" ") || strDataDigitada[2].equals(" ")){
texto[2] = strData[2];
}else{
if(strDataDigitada[2].trim().length()<4){
texto[2] = strData[2].substring(0,4-strDataDigitada[2].trim().length()) + strDataDigitada[2].trim();
}else{
texto[2] = strDataDigitada[2];
}
}
bbb.setText((texto[0]+"/"+texto[1]+"/"+texto[2]));
}
}
});
Componente.setText(getData());
}
catch(Exception ex)
{JOptionPane.showMessageDialog(null,ex.getMessage(),"ERRO AO INSERIR FORMATO DE DATA",JOptionPane.ERROR_MESSAGE);}
}
G
O USO de uma mascara pelo campo foi a solução
Criado 5 de maio de 2009
Ultima resposta 7 de mai. de 2009
Respostas 4
Participantes 2
Alura Git Flow: entenda o que é, como e quando utilizar Entenda o que é Git Flow, como funciona seu fluxo com branches como Master, Develop, Feature, Release e Hotfix, além de vantagens e desvantagens.
Casa do Codigo Ontologias e Web Semantica: Do conceito a aplicacao Por Ivam Galvao Filho — Casa do Codigo