Como alterar tamanho do campo do JTextField

10 respostas
G

Pessoal estou em um projeto e não encontrei até agora uma forma de alterar o tamanho da caixa do JTextField na tela de Cadastro. Quando crio um campo para digitar o código o JTextField cria uma caixa que completa todo o final da linha, eu gostaria de delimitar o tamanho da caixa para tipo só aceitar 6 digítos. Se alguém puder me dar alguma dica, já agradeço muito! :roll:

10 Respostas

E

setColumns( int columns )

A

faz uma máscara

eh rapidinho e facinho

:lol:

E

No método setColumns( int columns ) você informa um provável tamanho do teu componente. A quantidade de caracteres aceitos deve ser implementada, como por exemplo, através do Document.

E

Se for para limitar a quantidade de caracteres que podem ser digitados, tem um artigo aqui do GUJ que ensina como implementar um Document: http://www.guj.com.br/article.show.logic?id=29

E

Basicamente, você precisa se preocupar é com o método insertString.

E

Outra forma:

jTextField.addKeyListener(new java.awt.event.KeyAdapter() {
    public void keyTyped(java.awt.event.KeyEvent evt) {
        jTextFieldKeyTyped(evt);
    }
});
private void jTextFieldKeyTyped( java.awt.event.KeyEvent evt ){
    if( ( (JTextField)evt.getSource() ).getDocument().getLength() >= 6 ){
        evt.setKeyChar( KeyEvent.CHAR_UNDEFINED );
    }
}
E

A vantagem de implementar isso no document ao invés de KeyListener, é que se eu colar um texto com o mouse, não haverá um KeyEvent, enquanto o insertString será invocado independente da origem do texto.

Para criar um listener, talvez um DocumentListener implementando o método “insertUpdate” se encaixe melhor.

E

Correto Eric.

R
acho que isso pode resolver... crie uma classe como esta:
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;

public class MaxCharss extends PlainDocument {
   private int maxChars;
   
   public MaxCharss(int maxChar){
       this.maxChars = maxChar;
   }
    @Override
    public void insertString(int offset, String str, AttributeSet attr) throws BadLocationException {
         if(str != null && (getLength() + str.length() > maxChars)){
             str = str.substring(0, maxChars);
         }
        
        super.insertString(offset, str, attr);
    }


}
}
ai no seu jTextFiel só voce adiciona no Document ...
seuJtextField.setDocument(new MaxCharss(10))
já vai limitar a 10 caracteres por exemplo.
G

Meu professor do curso me disse que uma boa ferramenta é Visual Editor…

Criado 5 de novembro de 2010
Ultima resposta 8 de nov. de 2010
Respostas 10
Participantes 5