Я расширил Howards Answer и использовал метод JTree convertValueToText , чтобы вызвать реальный обработчик ячеек и сохранить результаты в коллекции, а не в одну строку.1007 * с рекурсивной функцией getTreeText
private static void getTreeText(JTree tree, TreeModel model, Object object, Collection<String> result) {
result.add(tree.convertValueToText(object, true, true, true, 0, true));
for (int i = 0; i < model.getChildCount(object); i++) {
getTreeText(tree, model, model.getChild(object, i), result);
}
}
getTreeText
принимает четыре аргумента
tree
: дерево с узлами дерева model
:Модель, которую мы запрашиваем для узлов дерева object
: объект, для которого мы запрашиваем строковое представление (включая все дочерние элементы) result
: коллекция для сохранения каждого узла Строковое значение
Метод convertValueToText принимает параметры, даже не используемые в базовой реализации.Но в зависимости от типов объектов, используемых в дереве, рендеры могут потреблять эти значения, а параметры могут нуждаться в тонкой настройке.В моем случае они вообще игнорировались.