jtree, есть ли способ преобразовать дерево выбранного пути в строку и обратно? - PullRequest
0 голосов
/ 23 декабря 2011

У меня есть это Jtree, и я должен вставить в него «таблицы» в моей таблице tbltables.(Под этим я подразумеваю, что в моей базе данных MSQL есть таблица tbltables, и в ней есть список таблиц).

Таким образом, в этих таблицах также могут быть таблицы.Итак, теперь проблема: я не знаю, как сказать, что одна таблица должна быть в другой.Единственное, о чем я могу подумать, это когда я добавляю таблицы в мое Jtree (я могу это сделать, но не сохраняю то, как они выглядят в моей БД), тогда я могу сохранить выбранный индекс или место назначения добавленного узла.как ["Продовольственные товары", "фрукты"], а затем, когда я вызываю его из своей базы данных, я могу добавить его вот так.

Итак, мне нужно будет преобразовать путь в строку и наоборот.Я делаю это неправильно?Есть ли лучший способ сделать это?

Примечание: я не работаю с физическими файлами и папками, я работаю с "воображаемыми" в моей базе данных, для которой у меня есть пункт назначения.

1 Ответ

2 голосов
/ 23 декабря 2011

Я бы сказал, что ваша таблица должна иметь первичный ключ (назовем его table_id) и внешний ключ parent_table_id, ссылающийся на первичный ключ. Родительский идентификатор может быть нулевым (например, для root).

Вы можете определить класс MyTableNode с полями id, parent id и name. Создайте свою TreeModel на основе иерархии MyTableNode. DefaultMutableTreeNode может хранить любой пользовательский объект.

Затем вы можете определить собственный рендерер для JTree для отображения текста имени пользовательских объектов (MyTableNodes) или попытаться переопределить метод toString () объекта, который используется для отображения значения в рендере по умолчанию.

Ваш путь (сохранение путей в виде строки) также может работать. Повторно представьте TreePath вашего узла как «root / first child /.../ leaf». Поэтому каждая таблица (строка JTree) будет иметь свой собственный путь. Затем восстановление узла дерева означает разбор пути к String [] и переход от корня дерева к поиску подходящего потомка со следующим именем из массива.

...