Маркировки узла JTree часто изменяются, но ширина кэшируется

В настоящее время я использую пользовательский TreeCellRenderer для обработки маркировки и изменений значка для моего JTree. Проблема возникает, когда я должен изменить текст на нескольких узлах. TreeCellRenderer работает отлично в этом, новый текст отображен. Однако ширина из первоначального текста кэшируется и не обновляется. Я попытался взломать его путем переопределения getPreferredSize в TreeCellRenderer, но это не работает правильно, так как у меня есть строки HTML. Я даже попытался анализировать теги и получить ширину, но это все еще не прекрасно. Я использовал SwingUtilities и FontMetrics.

Кажется, что с помощью поддержки дерева DefaultTreeModel.nodeChanged(TreeNode) является надлежащим способом изменить узел. Однако у меня должна была бы быть дополнительная структура данных для обработки доступа к узлам, которые должны быть изменены. Лично, я хотел бы только изменить узлы то изменение потребности. Но, который потребовал бы, чтобы другая структура данных нашла все узлы, которые должны быть обновлены вид вещи. Каков лучший способ вокруг кэширования размера поддержки JLabel в этой ситуации?

7
задан initialZero 12 February 2010 в 22:13
поделиться

1 ответ

Я обнаружил, что предложенный вами способ вызова nodeChanged работает лучше всего.

2
ответ дан 7 December 2019 в 18:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: