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:
Como alterar tamanho do campo do JTextField
10 Respostas
faz uma máscara
eh rapidinho e facinho
:lol:
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.
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
Basicamente, você precisa se preocupar é com o método insertString.
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 );
}
}
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.
Correto Eric.
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);
}
}
}
seuJtextField.setDocument(new MaxCharss(10))
Meu professor do curso me disse que uma boa ferramenta é Visual Editor…