Home >Java >javaTutorial >How to Wire a JTextPane to Update with PaneWithList's Selected Row?

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

Patricia Arquette
Patricia ArquetteOriginal
2024-11-30 02:20:10663browse

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

How to wire one pane to another: Wiring output to paneWithList

To connect the output of the selected row in PaneWithList to the JTextPane in output, consider using the observer pattern. This design pattern involves creating an observable class (such as PaneWithList) that notifies its observers (such as output) when a property changes.

Implementing the Observer Pattern

1. Add a PropertyChangeListener to 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. Create an observer class Output:

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. Establish the Observer Relationship:
In your Main class, add an observer to PaneWithList and connect it to the Output object.

import java.beans.PropertyChangeListener;

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

Now, when the selected row in PaneWithList changes, Output will be notified and will update its text accordingly.

The above is the detailed content of How to Wire a JTextPane to Update with PaneWithList's Selected Row?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn