JTextField com mascara, não deixar hora > 24 e nem minutos > 60

3 respostas
F

Pessoal, meu textfield tem a seguinte mascara: ##:## que marca as horas
Não quero que o usuario digite uma hora maior que 23 e nem minutos maior do que 59
Para isso fiz uma classe qu extenda PlainDocument como sempre fiz pra fazer esse tipo de coisa mas não deu certo não...
Quando mudo ele: campo.setDocument(new TextoDeHoras()) n da pra inserir texto nele e ele fica de um tamanho mto pequeno(0)
Alguma ideia??

public class TextoDeHoras extends PlainDocument
{

    public void insertString(int offs, String str, AttributeSet a)
    {
        try
        {
            if(Integer.valueOf(this.getText(0, 2)) > 24)
                super.insertString(offs, "24", a);
            else
            {super.insertString(offs, str, a); return;}
        }
            catch(Exception ex)
            {

            }

        try
        {
            if(Integer.valueOf(this.getText(3, 2)) > 59)
                super.insertString(offs, "59", a);
            else
            {super.insertString(offs, str, a); return;}
        }
        catch (BadLocationException ex)
        {

        }

    }
}

PS: Não achei nada no forum desse tipo que me ajudou, descula se ja existe

3 Respostas

F

not a clue?

Metal_Java_Full

Qual a IDE q vc usa?
No NetBeans vc tem a opçao de selcionar um campode texto formatado pra verificar isso!!

O componente swing JFormattedTextField te dá muitas ferramentas pra mexer com tempo!!

vlew

F

uso o netbeans, mas isso n muda quase nada ué…código é código…n entendi oq vc disse

entao to usando o JFormattedTextField sim…e “seto” o document do JFormattedTextField pra essa classe ai que extende PlainDocument
fiz isso pra colocar limite no textfield, tipo de 10 caracteres e da certo…mas n sei pq n da certo pros numeros

Criado 11 de dezembro de 2009
Ultima resposta 11 de dez. de 2009
Respostas 3
Participantes 2