如何实现动态 Jtree,它显示已创建的类实例?
例如,我可以在我的应用程序中创建新的 Book(name)。在每本书中都可以是章节=章节的ArrayList。现在如何从中创建 jtree?
最佳答案
JTree 用法中涉及的类如下:
JTree
类本身提供了您需要的可显示项目,它的工作方式与 swing 中的表格和列表完全一样:它们有一个模型!DefaultTableModel 实现了 TableModel
,后者用作JTree
的数据容器。它用根节点实例化,然后将每个子节点添加到根节点或树中包含的其他节点。DefaultMutableTreeNode
,它是通用 JTree 节点的通用默认实现。
如何把这些东西混在一起?首先,我建议您查看有关它的 java sun 指南 here但是为了快速浏览一下,您可以考虑这样的事情:
// 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 中包含的所有主题,因此在迷茫之前先看一下它是件好事。
关于swing - 对象的 JTree?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2413896/