我有两个摆动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)