【问题标题】:How to unbind a binding from JGoodies-Binding (2.9.0)如何从 JGoodies-Binding (2.9.0) 解除绑定
【发布时间】:2014-04-01 04:07:27
【问题描述】:

我有一个罕见的用例,摆动视图的寿命比相关的表示模型长:摆动视图的寿命与应用程序的寿命一样长,每次新的“运行”时都会替换表示模型在应用程序中启动。

presentation-model 是一个 groovy bean:

@Bindable
static class MyPresentationModel{
   String myText = 'default-text'
}

swing-view 是一个 JTextField,使用 JGoodies BeanAdapter 绑定:

JTextField myTextField = new JTextField()
MyPresentationModel pm = new MyPresentationModel()
BeanAdapter<MyPresentationModel> beanAdapter = new BeanAdapter<MyPresentationModel>(pm, true)
Bindings.bind(myTextField , beanAdapter.getValueModel('myText'))

之后如何取消绑定 JTextField 中的表示模型?

我在 JGoodies-Binding API 中找到的唯一方向是

beanAdapter.setBean(null)

但这当然不会从 JTextField 中删除 JGoodies-PropertyChangeListener 和 JGoodies-DocumentListener。有没有一种很好的方法来删除这些?还是我自己破解了?

【问题讨论】:

    标签: java swing jgoodies


    【解决方案1】:

    据我所知,唯一的方法是打电话

    Bindings.bind(myTextField , beanAdapter.getValueModel('myText'))
    

    上述语句每次都使用来自新 PresentationModel 的新 bean 适配器。

    您无法解除绑定,您必须使用新的 PresentationModel 刷新绑定

    【讨论】:

    • 假设你有一个 BeanAdapter,我使用 beanAdapter.release() 导致 BeanAdapter 实例删除所有注册到 bean 适配器的 PropertyChangeListeners 的成功有限。但就像我说的,成功是有限的,很大程度上取决于你的 bean、bean 适配器和 ui 组件是如何连接在一起的。
    猜你喜欢
    • 2012-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-19
    • 1970-01-01
    • 2010-10-05
    • 1970-01-01
    相关资源
    最近更新 更多