Maison > Java > javaDidacticiel > Comment implémenter une validation personnalisée dans les cellules JTable et fournir des commentaires visuels ?

Comment implémenter une validation personnalisée dans les cellules JTable et fournir des commentaires visuels ?

DDD
Libérer: 2024-10-31 02:42:01
original
365 Les gens l'ont consulté

How to Implement Custom Validation in JTable Cells and Provide Visual Feedback?

Comment personnaliser la validation des entrées dans les cellules JTable pour rejeter des valeurs spécifiques

JTable effectue par défaut la validation des entrées en rejetant les valeurs qui ne peuvent pas être forcées le type de classe de colonne spécifié. Par exemple, si le type de classe d'une colonne est défini sur Integer, les valeurs non entières seront automatiquement rejetées et le contour de la cellule sera défini en rouge.

Si vous souhaitez valider la saisie de la cellule au-delà de la vérification de type par défaut, vous pouvez remplacer la méthode setValueAt du modèle de votre table. Cependant, cette approche empêche uniquement l'acceptation de l'entrée et ne déclenche pas le même retour visuel que le vérificateur de type.

Implémentation de la validation personnalisée avec un éditeur de cellule

Pour Pour obtenir la même validation et le même retour visuel pour les règles de validation personnalisées, envisagez d'utiliser un éditeur de cellules personnalisé. Dans ce cas, vous créeriez une sous-classe de DefaultCellEditor qui :

  • Vérifie la valeur d'entrée par rapport à vos règles de validation (par exemple, pour les entiers positifs).
  • Définit l'indicateur isValid en conséquence.
  • Définit la couleur de la bordure de la cellule en fonction du résultat de la validation.

Exemple : éditeur de cellule personnalisé pour les entiers positifs

Voici un exemple d'un éditeur de cellule personnalisé qui valide les entiers positifs et définit la couleur de la bordure de la cellule en conséquence :

<code class="java">import javax.swing.*;
import javax.swing.table.*;

class PositiveIntegerCellEditor extends DefaultCellEditor {

    private static final Border RED = new LineBorder(Color.RED);
    private static final Border BLACK = new LineBorder(Color.BLACK);
    private JTextField textField;

    public PositiveIntegerCellEditor(JTextField textField) {
        super(textField);
        this.textField = textField;
        this.textField.setHorizontalAlignment(JTextField.RIGHT);
    }

    @Override
    public boolean stopCellEditing() {
        try {
            int v = Integer.valueOf(textField.getText());
            if (v < 0) {
                throw new NumberFormatException();
            }
        } catch (NumberFormatException e) {
            textField.setBorder(RED);
            return false;
        }
        return super.stopCellEditing();
    }

    @Override
    public Component getTableCellEditorComponent(JTable table,
            Object value, boolean isSelected, int row, int column) {
        textField.setBorder(BLACK);
        return super.getTableCellEditorComponent(table, value, isSelected, row, column);
    }
}</code>
Copier après la connexion

En définissant l'éditeur de cellule de la colonne souhaitée sur votre implémentation personnalisée, vous pouvez obtenir le comportement de validation souhaité et le retour visuel lorsque les utilisateurs saisissent des valeurs non positives.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal