Ajuda - Busca - Membros - Calendário
Versão Completa: LImitar JTextField
Fórum Script Brasil > Programação & Desenvolvimento > Java
Ns
Eu que crio um JTExt com espaço para três caracteres usando uma variável privada da minha classe assim:a=new JTExtField(3), mas conforme o usuário queira, o texto pode se estender ilimitadamente. Como eu deveria fazer para que o JTExtField apenas permitisse três letras, sendo que se o usuário digitasse mais que isso, elas não apareceriam. Existe uma função para isso?
iSoron
Uma solução sugerida pelo pessoal no fórum da Sun:

CODE
import javax.swing.*;
import javax.swing.text.*;

class MyTextVerifier extends PlainDocument
{
    public void insertString(int offset, String str, AttributeSet attSet)
        throws BadLocationException
    {
        boolean valid = false;
        if (str == null) return;

        String old = getText(0, getLength());
        String newStr = old.substring( 0, offset ) + str + old.substring( offset );


        valid = isValid(newStr);
        if (valid) super.insertString( offset, str, attSet );
    }

    public boolean isValid(String str) {
        return str.length() < 10;
    }
}

class Teste extends JFrame {
    public Teste()
    {
        setSize(300, 100);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JTextField f = new JTextField();
        f.setDocument(new MyTextVerifier());
        add(f);
    }

    public static void main(String[] args) {
        Teste t = new Teste();
        t.setVisible(true);
    }
}


Na função isValid() você pode acrescentar outras opções de validação.
Esta é uma versão simplificada de nosso conteúdo principal. Para ver a versão completa com maiores informações, formatação e imagens, por favor clique aqui.
Invision Power Board © 2001-2012 Invision Power Services, Inc.