我有两个 swing ui 表单和一个它们都查看的模块。
每个 ui 都添加一个监听器来监听属性的变化
并在发生更改时更新其自己的文本字段。
基本上 - 他们都应该更新模块并从中更新。
有没有一种简单的方法可以在没有绑定框架的情况下做到这一点
这是我的做法(但我不断收到通知中的变异尝试)-
关于我的文本字段的更新
myTextField.getDocument().addDocumentListener(new TFDocumentListener() {
protected void userChangedTF() {
Float value = myTextField.getValue();
if (value != null) {
myObj.setMyAttribute(value);
}
}
});
仍在用户界面中 - 注册更改
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)
}
如果您需要更改相同的内容JTextComponent
在侦听器中将更改(例如 setText())包装在SwingUtilities.invokeLater()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)