Pessoal preciso de um help aqui básico!! Vejam esse método:
[code]public void validaTexto() {
String txt1 = txtData.getText(), txt2 = txtNum.getText();
if (txt2.length() > 3) {
JOptionPane.showMessageDialog(this, "O campo do número sorteado só pode ter 4 caracteres!!!\nEx.: 9999","Atenção...",JOptionPane.ERROR_MESSAGE);
return;
}
if (txt1.length() > 10) {
JOptionPane.showMessageDialog(this, "O campo da data deve conter o formato de dd/mm/aaaa","Atenção...",JOptionPane.ERROR_MESSAGE);
return;
}
}[/code]
Bom, funciona perfeitamente no event KeyPressed, mas ele permite o caracter sair no Jtexfield, por exemplo, quando deu o limite e aparece a mensagem, o caracter que o usuario digitar, vai sair no jtext, a mensagem só esta servindo de alerta porque mesmo assim ele nào barra de ser digitado!!! Lembro no Delphi que quando eu queria impedir de digitar, era algo assim, KeyCode = 0, era algo assim, dae eu fazia a validação e se retornasse erro, o keycode seria 0, ou nulo!!! No Java como eu faria isso?! Tem como usar o KeyEvent.VK_null por exemplo?!?! Ou tem alguem método pra validar o tamanho de caracteres no JTextField?!
Obrigado
Fala Pilantra!!!
Olha… o objeto JTextField possui um método que permite dizer se ele deve ou não ser editável…
JTextField meuCampo = new JTextField();
meuCampo.setAccessible(false);
Abraços!!
Mas tipow, se for que eu to pensando, eu poderia usar esse método se retornasse maior de 3 caractéres é isso?! Dae o text fica não acessivel
Essa é uma idéia… se bem que deve haver um jeito melhor. Swing não é minha especialidade. =(
Mas cara, não deu certo, e olhei no Java Api e não existe esse método pro JTextField!!!
Veja:
bash-3.00$ javac BichoCadastro.java
BichoCadastro.java:305: cannot find symbol
symbol : method setAccessible(boolean)
location: class javax.swing.JTextField
txtNum.setAccessible(false);
^
BichoCadastro.java:310: cannot find symbol
symbol : method setAccessible(boolean)
location: class javax.swing.JTextField
txtData.setAccessible(false);
^
2 errors
O método correto é:
txtNum.setEnabled(false);
Dê uma olhada no Java Api nas classes javax.swing.text.MaskFormatter e javax.swing.JFormattedTextField. Veja o exemplo abaixo:
MaskFormatter formato = new MaskFormatter("####");
JFormattedTextField tf = new JFormattedTextField(formato);
tf.setColumns(4);
Passei como parâmetro para o MaskFormatter 4 # (sustenidos), vc não conseguirá digitar no TextField mais do que 4 digitos.
Acho que o que vc quer é isso.
Boa sorte!
[quote=“ayronmax”]Dê uma olhada no Java Api nas classes javax.swing.text.MaskFormatter e javax.swing.JFormattedTextField. Veja o exemplo abaixo:
MaskFormatter formato = new MaskFormatter("####");
JFormattedTextField tf = new JFormattedTextField(formato);
tf.setColumns(4);
Passei como parâmetro para o MaskFormatter 4 # (sustenidos), vc não conseguirá digitar no TextField mais do que 4 digitos.
Acho que o que vc quer é isso.
Boa sorte![/quote]
Ow cara, boa ideia ein!! valeu!!! vou fazer aki!!!
Obrigado
Po legal, funciono perfeitamente, inclusive vou adotar esse TextField pra usar diariamente :lol:
Só tem um problema, eu deixei o botão Inserir, em modo Default, o usuário precisa dar dois enters pra acionar o botão!!! Por que será!?
Cara, eu não sei, mas vou dar uma olhada e se eu descobrir eu te digo.