Maison >Java >javaDidacticiel >Comment câbler un JTextPane pour le mettre à jour avec la ligne sélectionnée de PaneWithList ?

Comment câbler un JTextPane pour le mettre à jour avec la ligne sélectionnée de PaneWithList ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-30 02:20:10666parcourir

How to Wire a JTextPane to Update with PaneWithList's Selected Row?

Comment câbler un volet à un autre : Câblage de la sortie à paneWithList

Pour connecter la sortie de la ligne sélectionnée dans PaneWithList au JTextPane en sortie, pensez à utiliser l'observateur modèle. Ce modèle de conception implique la création d'une classe observable (telle que PaneWithList) qui informe ses observateurs (tels que la sortie) lorsqu'une propriété change.

Implémentation du modèle d'observateur

1. Ajoutez un PropertyChangeListener à PaneWithList :

class PaneWithList extends JPanel {
    ...
    private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this);
    ...

    // Notify observers when the selected row changes
    protected void fireSelectedRowChanged(int oldValue, int newValue) {
        propertyChangeSupport.firePropertyChange("SELECTED_ROW", oldValue, newValue);
    }

    // Add a property change listener
    public void addPropertyChangeListener(PropertyChangeListener listener) {
        propertyChangeSupport.addPropertyChangeListener(listener);
    }
}

2. Créer une classe d'observateur Sortie :

class Output extends JTextPane implements PropertyChangeListener {
    ...
    
    // Handle property change events from `PaneWithList`
    @Override
    public void propertyChange(PropertyChangeEvent e) {
        if (e.getPropertyName().equals("SELECTED_ROW")) {
            int row = (int) e.getNewValue();
            String selectedItem = paneWithList.getSelectedValue(); // Get the selected item from `PaneWithList`
            append(selectedItem + "\n"); // Display the selected item in the text pane
        }
    }
}

3. Établissez la relation d'observateur :
Dans votre classe Main, ajoutez un observateur à PaneWithList et connectez-le à l'objet Output.

import java.beans.PropertyChangeListener;

public class Main {
    ...
    
    public static void main(String[] args) {
        ...
        
        paneWithList.addPropertyChangeListener(new Output()); // Connect to `Output`
        ...
    }
}

Maintenant, lorsque la ligne sélectionnée dans PaneWithList change, Output sera sera averti et mettra à jour son texte en conséquence.

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!

Déclaration:
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