Home >Java >javaTutorial >How to Wire a JTextPane to Update with PaneWithList's Selected Row?
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.
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!