Обновление привязок в Swixml2 - PullRequest
       14

Обновление привязок в Swixml2

3 голосов
/ 07 сентября 2011

У меня есть диалог, определенный в SwiX ml xml, который связывается со свойством соответствующего компонента для диалога.

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

Когда я обновляю значение свойства внутри компонента (например, с помощью действия), пользовательский интерфейс не обновляется с новым значением.

Ответы [ 2 ]

2 голосов
/ 07 сентября 2011

Разобрался. Мне нужно было отправить PropertyChangEvent на PropertyChangeListener на бобе.

projectLocation = fc.getSelectedFile().getPath();
PropertyChangeEvent pce = new PropertyChangeEvent(this,
    "projectLocation", projectLocation, fc.getSelectedFile().getPath());
PropertyChangeListener[] p = getPropertyChangeListeners();
p[0].propertyChange(pce);
2 голосов
/ 07 сентября 2011

1) Swing является однопоточным, и все изменения должны быть выполнены в EDT ( EventDispaschThread ),

2) если вы хотите обновить пользовательский интерфейс, - если нет EDT, - обновляет каминги от BackGround Tasks - нет событий от слушателей (особенно от ActionListener или Action )

а) вы должны перейти в invokeLater ()

b) не уверен, но большинство методов должны быть связаны с UI / Look & Feel, тогда вам нужно вызвать SwingUtilities.updateComponentTreeUI ( Имя контейнера верхнего уровня );

...