Предположим, что TreeModellistener только что был уведомлен (через API TreeModellistener) о том, что в модели произошло изменение. ОК, что теперь? Таким образом, слушатель, в моей ситуации, является контейнером jtree или внутренним классом, реализующим слушателя, живя под тем же контейнером, что и jtree .
, так что предположим, что я - TreeModellistener , счастливо жить в jform с моим братом jtree . Внезапно мой метод TreeNodesinserted (TreeMoDelevent EVT) вызывается. Что мне теперь делать? Если я позвоню jtree.updateui () из Inside Me, то список прослушивателей модели бросает одновременную модификацию Исключение. Могу ли я назвать что -то еще, кроме UpdateUI ? Итак, я сделал это вне слушателя. Из JFORM я просто вызываю метод модели, который изменяет базовую структуру, а затем я вызываю Updateui . Нет TreeModellistener . В AddTreeModellistener моей модели (TreeModellistener Sluster) Реализация я поместил систему отладки.
Код: Выделить всё
System.out.println("listener added: " + listener.getClass().getCanonicalName());
< /code>
и я увидел этот вывод отладки как раз когда я выполнил jtree.setmodel (model) < /code>: < /p>
Слушатель добавлен: javax.swing.jtree.tremodelhandler < /p>
Слушатель. javax.swing.plaf.basic.basictreeui.handler
complourentmodificationexception Единственный способ обновить дерево - это сделать это за пределами TreeModellistener < /code>. Какие -нибудь комментарии или идеи для лучшего решения? Я что -то упускаю?
Подробнее здесь: https://stackoverflow.com/questions/191 ... ying-model