3

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

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

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

4

2 回答 2

2

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

2)如果您想更新 UI,-如果没有 EDT,-从后台任务更新 camings-没有来自侦听器的事件(尤其是来自ActionListenerAction

a)您必须包装到 invokeLater()

b)不确定,但大多数方法应该与 UI/Look&Feel 相关,那么您必须调用SwingUtilities.updateComponentTreeUI顶级容器的名称);

于 2011-09-07T10:04:25.330 回答
2

弄清楚了。我需要向 bean 发送PropertyChangEvent一个PropertyChangeListener

projectLocation = fc.getSelectedFile().getPath();
PropertyChangeEvent pce = new PropertyChangeEvent(this,
    "projectLocation", projectLocation, fc.getSelectedFile().getPath());
PropertyChangeListener[] p = getPropertyChangeListeners();
p[0].propertyChange(pce);
于 2011-09-07T11:46:54.963 回答