Tenho esse trecho de código onde preciso que a regra é, se eu digitar 3 ou menos
caracteres ele retorna para a TextField. Só que emito uma mensagem
para o usuário. O Problema:
A mensagem aparece mais que uma vez antes de voltar para a TextField, muito incomodo essa situação.
Detalhe, existe outra forma de controlar isso, diferente da que eu estou tentando?
tfNome.addFocusListener(new FocusAdapter() {
public void focusLost(FocusEvent e) {
//adicionar sua verificação aqui
if(tfNome.getText().length()< 4)
JOptionPane.showMessageDialog(null, "Aceita acima de 2 caracteres");
tfNome.setText("");
tfNome.grabFocus();
}
});
Agradeço a atenção dos colegas.
Olá,
Aqui não apareceu não, somente uma vez a mensagem.
Você tem outro Listener nesse objeto tfNome ?
[quote=HenriqueBR]Olá,
Aqui não apareceu não, somente uma vez a mensagem.
Você tem outro Listener nesse objeto tfNome ?[/quote]
Sim tenho mais que um Listener. Mas valeu a ajuda, achei um jeito, inclusive que força o usuário a digitar o Nome que é necessário.
tfNome.addFocusListener(new FocusAdapter() {
public void focusLost(FocusEvent e) {
//adicionar sua verificação aqui
if(tfNome.getText().length()< 4 && tfNome.getText().length() != 0)
JOptionPane.showMessageDialog(null, "Aceita acima de 3 caracteres");
tfNome.setText("");
tfNome.grabFocus();
}
});
[quote=Armando Pereira][quote=HenriqueBR]Olá,
Aqui não apareceu não, somente uma vez a mensagem.
Você tem outro Listener nesse objeto tfNome ?[/quote]
Sim tenho mais que um Listener. Mas valeu a ajuda, achei um jeito, inclusive que força o usuário a digitar o Nome que é necessário.
tfNome.addFocusListener(new FocusAdapter() {
public void focusLost(FocusEvent e) {
//adicionar sua verificação aqui
if(tfNome.getText().length()< 4 && tfNome.getText().length() != 0)
JOptionPane.showMessageDialog(null, "Aceita acima de 3 caracteres");
tfNome.setText("");
tfNome.grabFocus();
}
});
[/quote]
Nossa, tô ficando xarope, não deu certo não…
Realmente o outro Listener atrapalha :?
[quote=Armando Pereira][quote=Armando Pereira][quote=HenriqueBR]Olá,
Aqui não apareceu não, somente uma vez a mensagem.
Você tem outro Listener nesse objeto tfNome ?[/quote]
Sim tenho mais que um Listener. Mas valeu a ajuda, achei um jeito, inclusive que força o usuário a digitar o Nome que é necessário.
tfNome.addFocusListener(new FocusAdapter() {
public void focusLost(FocusEvent e) {
//adicionar sua verificação aqui
if(tfNome.getText().length()< 4 && tfNome.getText().length() != 0)
JOptionPane.showMessageDialog(null, "Aceita acima de 3 caracteres");
tfNome.setText("");
tfNome.grabFocus();
}
});
[/quote]
Nossa, tô ficando xarope, não deu certo não…
Realmente o outro Listener atrapalha :? [/quote]
Henrrique, tenho outros Listener, mas ainda não tenho para o mesmo objeto. Então, por que acontece essa repetição de mensagem?
Não use eventos para tratar isso. Prefira um InputVerifier:
http://docs.oracle.com/javase/7/docs/api/javax/swing/InputVerifier.html
class LengthVerifier extends InputVerifier {
public boolean verify(JComponent input) {
JTextField tf = (JTextField) input;
return tf.getText().lenght() == 3;
}
}
Uso:
seuTextField.setInputVerifier(new LenghtVerifier());