Показать элемент управления «раскрыть» на узлах JTree после удаления дочерних элементов? - PullRequest
3 голосов
/ 07 июля 2011

У меня есть DefaultTreeModel, содержащий подкласс DefaultMutableTreeNode. Я только переопределил isLeaf(), чтобы всегда возвращать true, потому что я лениво загружаю дочерние элементы, когда узел расширяется. Затем, когда узел свернут, я удаляю дочерние элементы (запускаю правильное событие treeNodesRemoved), потому что я отписался от обновлений с сервера.

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

Related: Добавить кнопку «развернуть» к узлу JTree, у которого нет дочерних элементов? . Является ли добавление поддельного ребенка единственным способом?

Expand control disappears after collapsing

1 Ответ

0 голосов
/ 07 июля 2011

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

Таким образом, у узла всегда есть дочерние элементы и всегда представлен элемент управления расширением

...