我在SwiX ml xml 中定义了一个对话框,该对话框与对话框的相应 bean 上的属性绑定。
:
<label text="Project Files Location"/>
<textfield id="tfProjectLocation" bindWith="projectLocation"/>
<button label="Browse" action="actionBrowse"/>
:
当我从 bean 中更新属性的值(例如使用操作)时,UI 不会使用新值进行更新。
1) Swing 是单线程的,所有更改都必须在 EDT ( EventDispaschThread ) 上完成,
2)如果您想更新 UI,-如果没有 EDT,-从后台任务更新 camings-没有来自侦听器的事件(尤其是来自ActionListener或Action)
a)您必须包装到 invokeLater()
b)不确定,但大多数方法应该与 UI/Look&Feel 相关,那么您必须调用SwingUtilities.updateComponentTreeUI
(顶级容器的名称);
弄清楚了。我需要向 bean 发送PropertyChangEvent
一个PropertyChangeListener
。
projectLocation = fc.getSelectedFile().getPath();
PropertyChangeEvent pce = new PropertyChangeEvent(this,
"projectLocation", projectLocation, fc.getSelectedFile().getPath());
PropertyChangeListener[] p = getPropertyChangeListeners();
p[0].propertyChange(pce);