Класс, участвующий в использовании JTree , следующий:
- сам класс
JTree
, который обеспечивает отображаемый элемент, который вам нужен, и он работает точно так же, как таблицы и списки в разгаре: у них есть модель!
-
DefaultTableModel implements TableModel
, который работает как контейнер данных для JTree
. Он создается с помощью корневого узла, затем каждый дочерний узел добавляется к корневому узлу или к другим узлам, содержащимся в дереве.
-
DefaultMutableTreeNode
, который является реализацией по умолчанию общего назначения для универсального узла JTree.
Как смешать эти вещи? Прежде всего, я предлагаю вам ознакомиться с java sun guide по этому поводу здесь , но для быстрого взгляда вы можете подумать о следующем:
// this is the root of your tree
DefaultMutableTreeNode root = new DefaultMutableTreeNode("Books");
for (Book b : books)
{
// this adds every book to the root node
DefaultMutableTreeNode curBook = new DefaultMutableTreeNode(b);
root.add(curBook);
// this adds every chapter to its own book
for (Chapter c : b.chapters())
curBook.add(new DefaultMutableTreeNode(c));
}
// at this point you have your tree ready, you just have to setup the model and create the effective JTree
DefaultTreeModel treeModel = new DefaultTreeModel(root);
JTree tree = new JTree(treeModel);
//now you tree is ready to be used
Подход действительно идентичен тому, который вы используете для JTable
или JList
, даже если структура данных (и, соответственно, модель) отличается. Подумайте о том, что это стандартный способ сделать это, но вы можете легко написать свой собственный TreeNode
или TreeModel
класс в зависимости от того, что вам действительно нужно.
Я хотел бы сообщить вам, что руководство Sun по java содержит почти все темы, содержащиеся в базовом JDK, так что было бы полезно взглянуть на него, прежде чем чувствовать себя потерянным.