Maison > Java > javaDidacticiel > le corps du texte

Comment utiliser correctement SwingPropertyChangeSupport pour les mises à jour dynamiques de JTextArea ?

Linda Hamilton
Libérer: 2024-11-08 22:01:02
original
401 Les gens l'ont consulté

How to Correctly Use SwingPropertyChangeSupport for Dynamic JTextArea Updates?

SwingPropertyChangeSupport pour les mises à jour dynamiques de JTextArea

Description du problème :

L'objectif est de mettre à jour dynamiquement le contenu d'un JTextArea basé sur les modifications apportées dans une boîte de dialogue de saisie. Lorsque l'entrée est saisie et confirmée, le tableau est mis à jour correctement, mais l'interface graphique ne reflète pas les modifications.

Aperçu du code :

Le code fourni utilise SwingPropertyChangeSupport pour faciliter les événements de changement de propriété. Le tableau est mis à jour à l'aide de arrayForUpdate.instructionsIn(newValue, a), où newValue est l'entrée modifiée et a est l'index du tableau.

Dépannage du problème :

Après en inspectant le code, le problème semble résider dans la méthode setBoundProperty au sein de la classe ArrayForUpdating.

<code class="java">public void setBoundProperty(String boundProperty) {
    String oldValue = this.boundProperty;
    System.out.println("old = " + oldValue);
    String newValue = boundProperty;
    System.out.println("new = " + newValue);
    this.boundProperty = newValue;
    spcSupport.firePropertyChange(BOUND_PROPERTY, oldValue, newValue);
}</code>
Copier après la connexion
Copier après la connexion

Le problème avec la méthode setBoundProperty est que la méthode firePropertyChange est invoquée avec les arguments incorrects. Le code concerné est marqué comme suit :

<code class="java">    spcSupport.firePropertyChange(BOUND_PROPERTY, oldValue, newValue);</code>
Copier après la connexion

Dans ce cas spécifique, l'utilisation correcte de firePropertyChange serait :

<code class="java">    spcSupport.firePropertyChange(BOUND_PROPERTY, boundProperty, newValue);</code>
Copier après la connexion

Avec la correction appliquée, le code suivant reflète avec précision le extrait modifié :

<code class="java">public void setBoundProperty(String boundProperty) {
    String oldValue = this.boundProperty;
    System.out.println("old = " + oldValue);
    String newValue = boundProperty;
    System.out.println("new = " + newValue);
    this.boundProperty = newValue;
    spcSupport.firePropertyChange(BOUND_PROPERTY, oldValue, newValue);
}</code>
Copier après la connexion
Copier après la connexion

Résumé :

En effectuant cet ajustement de la méthode setBoundProperty, le processus de liaison entre le tableau et JTextArea est établi correctement. En conséquence, l'interface graphique reflétera désormais avec succès toutes les modifications apportées via la boîte de dialogue de saisie.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal