Um die Ausgabe der ausgewählten Zeile in PaneWithList mit dem JTextPane in der Ausgabe zu verbinden, sollten Sie den Beobachter verwenden Muster. Dieses Entwurfsmuster beinhaltet die Erstellung einer beobachtbaren Klasse (z. B. PaneWithList), die ihre Beobachter (z. B. die Ausgabe) benachrichtigt, wenn sich eine Eigenschaft ändert.
1. Fügen Sie einen PropertyChangeListener zu PaneWithList hinzu:
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. Erstellen Sie eine Beobachterklasse. Ausgabe:
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. Stellen Sie die Beobachterbeziehung her:
Fügen Sie in Ihrer Hauptklasse einen Beobachter zu PaneWithList hinzu und verbinden Sie ihn mit dem Output-Objekt.
import java.beans.PropertyChangeListener; public class Main { ... public static void main(String[] args) { ... paneWithList.addPropertyChangeListener(new Output()); // Connect to `Output` ... } }
Wenn sich nun die ausgewählte Zeile in PaneWithList ändert, wird Output dies tun werden benachrichtigt und werden den Text entsprechend aktualisieren.
Das obige ist der detaillierte Inhalt vonWie verbinde ich ein JTextPane zur Aktualisierung mit der ausgewählten Zeile von PaneWithList?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!