我有两个摆动的ui表格和一个他们都看的模块 每个ui都会为属性的更改添加一个监听器 并在发生更改时更新自己的文本字段。
basiccaly - 他们都应该更新模块并从中进行更新。 有没有一种简单的方法可以在没有绑定框架的情况下完成它
我是这样做的(但我一直试图在通知中变异) -
关于我的textField的更新
myTextField.getDocument().addDocumentListener(new TFDocumentListener() {
protected void userChangedTF() {
Float value = myTextField.getValue();
if (value != null) {
myObj.setMyAttribute(value);
}
}
});
仍然在ui中 - 注册更改
myObj.addMyAttributeChangedListener(new ValueChangeListener<Float>() {
@Override public void valueChanged(Float value) {
if (!myTextField.isFocusOwner()) {
myTextField.setValueIn(value);
}
}
});
在模块中 - 当setMyAttribute发生时 - 它调用此函数
private void notifyIntervalChanged(float newValue) {
for (ValueChangeListener valueChangeListener : intervalChangedListenersList) {
valueChangeListener.valueChanged(newValue);
}
}
我宣布了
public interface ValueChangeListener<T> {
void valueChanged(T Value)
}
答案 0 :(得分:13)
如果您需要更改侦听器中相同JTextComponent
的内容,请更改SwingUtilities.invokeLater()