2012-06-29 5 views
1

Хорошо, я очень новичок в Java, поэтому, пожалуйста, несите меня.Хранение и использование нескольких значений для узла JTree

Я использую NetBeans 6.8, чтобы написать небольшое настольное приложение, которое включает в себя компонент JTree, и мое требование состоит в том, чтобы я мог сохранять и загружать древовидную структуру, но что структура позволяет использовать три элемента информации на один узел дерева - Текст, который будет отображаться как узел, уникальный идентификатор и имя файла.

Конечно, мне также понадобится получить все три бита информации при щелчке узла.

Я успешно сохранил и загрузил древовидную модель с помощью getModel() и XMLDecoder/encoder, но это, конечно же, сохраняет только древовидную модель по умолчанию.

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

Предполагая, что такая модель дерева может быть даже возможна, может кто-нибудь объяснить, как это сделать, и, самое главное, как разместить модель в JTree, которая уже существует в приложении (и как я бы хотел перейдите к извлечению информации при щелчке узла - теперь я могу найти выбранный узел и получить его текст)

Если это невозможно, Id с радостью услышит альтернативные методы, которые приведут к одинаковой функциональности.

Решение было достигнуто благодаря всем благодаря их усилиям, однако правильный ответ должен идти к Андрею для его публикации в первую очередь!

Для заинтересованных: Я использовал IDE Netbeans для создания нового объекта Javabean. Как только я понял разницу между этим и нормальным объектом, мне удалось разместить вновь созданный объект Javabean в узел дерева. Просто чтобы все было хорошо, мой оригинальный метод сохранения все еще работает отлично!

спасибо за ваши усилия всем.

МВК

ответ

4

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

Инкапсулируйте их в JavaBeanObject и используйте соответствующий визуализатор.

+1

Если это не ответит на ваш вопрос, пожалуйста, обратитесь к нему. –

+0

Спасибо, Андрей, но я не ближе к пониманию того, как создать пользовательскую модель таблицы, чем я был раньше! Я могу инкапсулировать требуемые поля в объект без проблем, но я не знаю, как получить такой объект в древовидную модель (а затем в дерево), и я вообще не знаю, что такое средство визуализации, соответствующее или нет! Предполагая, что я получил объект в древовидную модель и в дерево, смогу ли я затем сохранить древовидную структуру в файл XML и загрузить ее снова? – MaxVK

+0

Предполагая, что сам объект является [JavaBean] (http://docs.oracle.com/javase/tutorial/javabeans/index.html), да. –

1

По умолчанию JTree использует DefaultTreeModel, который, в свою очередь, использует DefaultMutableTreeNode для представления каждого узла. Вы можете назначить любой объект узлу, и он будет отображаться путем вызова метода toString().

Итак, самое простое решение - инкапсулировать все данные, необходимые в классе, и реализовать метод toString(), чтобы вернуть все, что вы хотите отобразить. В качестве дополнительного бонуса, если вы реализуете свой класс по спецификации JavaBeans, вы получаете бесплатную сериализацию XML.

Вы действительно должны взглянуть на учебник Swing, в частности How to use Trees. Модели, рендереры и editosr будут более понятны после того, как вы прочитаете, как обрабатывать деревья, список и таблицы.

+0

Извините, Soronthar, я не мог видеть ваше сообщение раньше. Спасибо за ответ. Iv прочитал учебник «Как использовать деревья», и я попытался следовать одному из примеров там, но не смог смириться с тем, что они объясняют тем, что я пытаюсь сделать в среде netbeans. Я также начал читать спецификацию Javabeans (когда Andrew предоставил ссылку), но я еще не знаю, как создать JavaBean, который содержит три строки и может использоваться как узел в jtree. – MaxVK

+0

* «создать JavaBean, который содержит три строки» * BTW - текст *, который будет отображаться как узел «*? Это «третья строка»? –

+0

«Текст для отображения» - это то, что видно на дереве приложения и является первой строкой, уникальный идентификатор - это вторая строка, а имя файла - третья строка. Когда щелкнут узел, мне нужно вернуть все три, чтобы я мог правильно загрузить файл и отобразить сообщение. – MaxVK

 Смежные вопросы

  • Нет связанных вопросов^_^