Comment marquer JTable entrée de la cellule comme invalide?

Si je prends un JTable et spécifier une colonne classtype sur son modèle comme suit:

   DefaultTableModel model = new DefaultTableModel(columnNames, 100) {
       @Override
        public Class<?> getColumnClass(int columnIndex) {
            return Integer.class;
        }};

Puis à chaque fois qu'un utilisateur tente d'entrer un double valeur dans la table, Balançoire rejette automatiquement l'entrée et définit la cellule contour rouge.

Je veux le même effet se produire quand quelqu'un entre dans un "négatif ou 0' entrée de la cellule. J'ai obtenu ceci:

    @Override
    public void setValueAt(Object val, int rowIndex, int columnIndex) {
       if (val instanceof Number && ((Number) val).doubleValue() > 0) {
              super.setValueAt(val, rowIndex, columnIndex);
            } 
       }
   }

Cela empêche la cellule à partir de l'acceptation de toute non-valeurs positives, mais il se complique pas définir la couleur de rouge et de quitter la cellule comme modifiable.

J'ai essayé de regarder comment JTable fait, le rejet par défaut, mais je n'arrive pas à le trouver.

Comment puis-je faire rejeter la non-entrée positive de la même façon, il rejette la non-entrée entière?

Grâce

OriginalL'auteur Cuga | 2011-09-23