Olá pessoal, to fazendo uma aplicação aonde o usuário vai informar um nome e vou verificar se o nome possui de 3 a 6 caracteres e se são apenas caracteres. Se não estiver dentro deste padrão, quero pintar o JTextField de vermelho para mostrar que o campo está incorreto. Já tentei de várias formar. Tentei através do FocusLost, formWndowActived, formWindowOpened, mas não obtive sucesso. Tenho 7 TextField e quero validar eles em tempo real, ou seja, o cara digitou errado, quando ele digitar Tab ou ir para o próximo campo, o campo já deve dar o sinal se algo estiver errado, por isso eu estava tentando usar o FocusLost.
[code]
private void jTextField1FocusLost(java.awt.event.FocusEvent evt) {
final Controller controle = new Controller();
jTextField1.addKeyListener(new java.awt.event.KeyAdapter(){
@Override
public void keyPressed(KeyEvent ke) {
if(ke.getKeyCode() == KeyEvent.VK_TAB){
if(!controle.isAlfabetico(jTextField1.getText())){
JOptionPane.showMessageDialog(null, "a");
jTextField1.setBackground(Color.red);
}
}
}
});
} [/code]
public boolean isAlfabetico(String campo){
if(campo.length()>=3 && campo.length()<=6)
return campo.matches("[A-Z a-z ]{"+campo.length()+"}"); // adiciona um tamanho para informar ate onde vai verificar se eh letra
return false;
}
Este é o código que eu estou tentando mas não funciona. Este método para verificar se é alfabeto, está funcionando perfeitamente, já testei ele aqui.
Obs: coloquei aquele JOptionPane ali só pra ver se estava sendo chamado, mas ele nem se quer executa. 
:oops: