java尝试在通知中进行变异

Bic*_*ick 3 java swing

我有两个摆动ui表格和一个他们都看的模块.
每个ui都会添加一个监听器来更改属性,并在发生更改时更新自己的文本字段.

basiccaly - 他们都应该更新模块并从中更新.有没有一种简单的方法可以在没有绑定框架的情况下完成它

我是这样做的(但我不断尝试在通知中变异) -

关于我的textField的更新

 myTextField.getDocument().addDocumentListener(new TFDocumentListener() {
            protected void userChangedTF() {
                Float value = myTextField.getValue();
                if (value != null) {
                    myObj.setMyAttribute(value);
                }
            }
        });
Run Code Online (Sandbox Code Playgroud)

仍然在ui - 注册变化

        myObj.addMyAttributeChangedListener(new ValueChangeListener<Float>() {
            @Override public void valueChanged(Float value) {
                if (!myTextField.isFocusOwner()) {
                    myTextField.setValueIn(value);
                }
            }
        });
Run Code Online (Sandbox Code Playgroud)

在模块中 - 当setMyAttribute发生时 - 它调用此函数

private void notifyIntervalChanged(float newValue) {
    for (ValueChangeListener valueChangeListener : intervalChangedListenersList) {
        valueChangeListener.valueChanged(newValue);
    }
}
Run Code Online (Sandbox Code Playgroud)

我宣布了

public interface ValueChangeListener<T> {
     void valueChanged(T Value)
}
Run Code Online (Sandbox Code Playgroud)

Sta*_*avL 13

如果你需要JTextComponent在监听器中更改相同内容,请将更改(例如setText())包含在SwingUtilities.invokeLater()