swing - 对象的 JTree?

标签 swing netbeans jtree

如何实现动态 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

如果数据结构(和模型)不同,方法实际上与您用于 JTableJList 的方法相同。想一想,这是执行此操作的默认 方法,但您可以根据您的实际需要轻松编写自己的TreeNodeTreeModel 类。

我想让您知道,sun 关于 java 的指南几乎涵盖了基本 JDK 中包含的所有主题,因此在迷茫之前先看一下它是件好事。

关于swing - 对象的 JTree?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2413896/

相关文章:

java - 吉德oss : how to get checkbox in Jpopupmenu?

java - 不是调试对象或未监听要附加的调试器

java - 如何用Java制作一个类似JTree菜单的菜单?

java - JComboBox 多次输入相同内容

java - 这里有什么遗漏/错误?

java - 在开发java桌面应用程序中创建和使用数据库

php - 在哪里可以下载适用于 PHP 和 Mac OS X 的 Xdebug?

java - 如何防止 JTree 的默认 Cut 事件?

java - 如何使用字符串 JTree 创建节点?

java - 如何在 jtable 标题中添加复选框,以便只有我可以根据用户的意愿调用打印选中的列?