更新Swixml2中的绑定

时间:2011-09-07 09:11:51

标签: java swing swixml

我在SwiXml xml中定义了一个对话框,该对话框与对话框的相应bean上的属性绑定。

:
<label text="Project Files Location"/>
<textfield id="tfProjectLocation" bindWith="projectLocation"/>
<button label="Browse" action="actionBrowse"/>
:

当我从bean中更新属性的值(例如使用操作)时,UI不会使用新值进行更新。

2 个答案:

答案 0 :(得分:2)

1)Swing是单线程的,所有更改都必须在EDT上完成(EventDispaschThread),

2)如果你想更新UI, - 如果不是EDT, - 更新BackGround任务中的凸轮 - 来自Listeners的活动(特别是来自ActionListenerAction

a)你必须包装到invokeLater()

b)不确定,但大多数方法应该是UI / Look&amp; Feel相关,那么你必须调用SwingUtilities.updateComponentTreeUITop-Level Container's Name);

答案 1 :(得分:2)

想出来。我需要将PropertyChangEvent发送到bean上的PropertyChangeListener

projectLocation = fc.getSelectedFile().getPath();
PropertyChangeEvent pce = new PropertyChangeEvent(this,
    "projectLocation", projectLocation, fc.getSelectedFile().getPath());
PropertyChangeListener[] p = getPropertyChangeListeners();
p[0].propertyChange(pce);