3

ダイアログに対応するBeanのプロパティとバインドするSwiXmlxmlで定義されたダイアログがあります

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

Bean内から(アクションなどで)プロパティの値を更新すると、UIが新しい値で更新されません。

4

2 に答える 2

2

理解した。BeanPropertyChangEventの にをディスパッチする必要がありました。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 に答える
2

1) Swing はシングル スレッドであり、すべての変更は EDT ( EventDispaschThread ) で行う必要があります。

2) UI を更新する場合 - EDT がない場合 - BackGround タスクからの更新情報 -リスナーからのイベントがない(特にActionListenerまたはActionから)

a)invokeLater()にラップする必要があります

b) 確かではありませんが、ほとんどのメソッドは UI/Look&Feel に関連する必要があるため、SwingUtilities.updateComponentTreeUI(トップレベル コンテナーの名前) を呼び出す必要があります。

于 2011-09-07T10:04:25.330 に答える