Java-Versuch, in Benachrichtigung zu mutieren
Ich habe zwei Swing-UI-Formen und ein Modul, das beide betrachten.
Jede Benutzeroberfläche fügt der Änderung eines Attributs einen Listener hinzu und aktualisiert bei einer Änderung ihr eigenes Textfeld.
basiccaly - beide sollten das Modul aktualisieren und von ihm aus aktualisieren. Gibt es einen einfachen Weg ohne verbindlichen Rahmen?
Hier ist, wie ich es mache (aber ich bekomme immer wieder den Versuch, in der Benachrichtigung zu mutieren) -
Auf das Update meines Textfeldes
<code> myTextField.getDocument().addDocumentListener(new TFDocumentListener() { protected void userChangedTF() { Float value = myTextField.getValue(); if (value != null) { myObj.setMyAttribute(value); } } }); </code>
noch in der ui - registriere die änderung
<code> myObj.addMyAttributeChangedListener(new ValueChangeListener<Float>() { @Override public void valueChanged(Float value) { if (!myTextField.isFocusOwner()) { myTextField.setValueIn(value); } } }); </code>
Im Modul ruft setMyAttribute diese Funktion auf
<code>private void notifyIntervalChanged(float newValue) { for (ValueChangeListener valueChangeListener : intervalChangedListenersList) { valueChangeListener.valueChanged(newValue); } } </code>
und ich erklärte
<code>public interface ValueChangeListener<T> { void valueChanged(T Value) } </code>