Validar celulas da JTable?!

Olá. Eu preciso validar o que o user digita na coluna 0 da minha jtable. O valor de digitado só pode ser uma unica letra e deve ser maiuscula.
Adicionei um listener mas ele não valida na hora que o dado foi inserido, o que eu pude perceber é que se uma dada celula recebeu um dado qualqer ela aceita e se eu saio dessa celula e volto nela
ai sim o médoto validador é acionado. O que não serve, ele teria que validar assim que o user terminasse de digitar ou saisse da célula.

jtable = new JTable(linhas,colunas);
                             
                             for(int i=0;i<jtable.getRowCount();i++)
                                 for(int j=0;j<jtable.getColumnCount();j++)
                                     jtable.setValueAt("", i, j);
                             
                             jtable.getSelectionModel().addListSelectionListener(new ListSelectionListener()
                              {  
                                public void valueChanged(ListSelectionEvent e) {  
                                   
                                    Validador valida = new Validador();
          
                          boolean pode;
                                    
                                    //analise dos estados
                                    if(jtable.getSelectedColumn() == 0 && jtable.getSelectedRow() > 0){
                                       String r = valida.verificaEstado(jtable.getValueAt(jtable.getSelectedRow(),jtable.getSelectedColumn()).toString());
                                       if(r.length()>1 && (!r.equals("none")))
                                          JOptionPane.showMessageDialog(null, r);
                                       else
                                           if(!r.equals("none"))
                                           jtable.setValueAt(r.toUpperCase(Locale.ENGLISH), jtable.getSelectedRow(),jtable.getSelectedColumn() );
                                    }

                                }  
                             }  
                             );    

método validador

public String verificaEstado(String simbolo){
        
        /* Pattern p = Pattern.compile("\\^W");
        Matcher m = p.matcher(simbolo);*/
        
        String retorno = "";
        
        if(simbolo.equals(""))
            retorno = "none";
        else{        
            if(simbolo.length()>1)
                retorno = "Por favor digite apenas um caracter";
            else{
                Character ch = simbolo.toUpperCase().charAt(0);
                if(!Character.isLetter(ch))
                  retorno ="Por favor digite uma letra";
                else{ // aqui sabe-se que é letra
                    if(jaPossuiEstado(ch))
                       retorno = "Por favor digite outro estado, este já existe!";
                    else
                       retorno = simbolo.toUpperCase();
                }
            }
        }
        return retorno;
    }

obrigado!

  1. Aprenda a fazer seu próprio TableModel (links na minha assinatura). Isso resolverá esse e outros problemas que você nem sequer teve ainda.
  2. Poste dúvidas de interface gráfica no fórum de interface gráfica. Tópico movido.