java - 如何向每个 JTree 节点添加不同的 JComboBox?

标签 java swing jcombobox jtree

我有一个 JTree,我正在为我正在编写的游戏数据库程序填充技能。

有几个类别和子类别(实际技能),然后将技能级别设置为低于该类别(有时)。目前,我正在使用一个技能类别、内部的一些选项和一些枚举来模拟这一点,再加上一种检查技能是否属于类别(称为 isCategory)的方法。另外两点需要注意:

  1. 不同类型的技能表现不同。
    有些技能只能购买一次,有些则需要多次购买,有些可以选择等等
  2. 不同的类别包含不同的技能。
    例如,武器技能类别有不同类型的武器,但装甲技能位于不同的部分。

我见过一个非常好的例子,通过单元格渲染器将 ComboBox 附加到树中的每个节点。这是example我发现了。

我理解上面的代码,但我不知道如何将组合框附加到节点,而不是树?我读过'How to use Trees ',我运行并查看了一些 demos for tree 的代码。 。我可以制作基本的树,但我发现教程有点迟钝,并且缺乏足够的细节来让我自己弄清楚如何继续。我又找到了 example仅将叶节点渲染为复选框,这要复杂得多。

显然我想将两者结合起来,能够拥有不同的类别,能够拥有不同的技能,并且不同的技能具有不同的熟练程度。然而,我能想到的唯一方法是为不同类型使用不同的 JComboBoxModel,但我不知道如何做到这一点,而且我也不知道如何做。我尝试编辑复选框示例以使用 ComboBoxes,但我怎么也搞不明白。

有人可以给我一个提示,告诉我应该采取什么方法吗?因为我是 Java 新手,正在努力弄清楚该怎么做?

最佳答案

您应该实现TreeCellRenderer以及TreeCellEditor。两者都应返回具有不同模型的 JComboBox 。您应该根据 value 参数(实际上是树节点)在 getTreeCellEditorComponent/getTreeCellRenderingComponent 中决定选择哪种模型。

关于java - 如何向每个 JTree 节点添加不同的 JComboBox?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11794376/

相关文章:

java - Hibernate 级联多对多在子引用中创建重复项

Java:链表反向

java - 数据源: 'url' attribute is not specified and no embedded datasource could be configured

java - Servlet 和 JSP 的区别?

java - 将 JComboBox 添加到 JTable 单元格。所选项目不保留

Java:如何在 OS X Lion 中获取滚动方法?

java - 监听组件层次结构的关键事件

java - 从表模型中删除行后恢复 jTable 焦点和位置

java - 如何计算两个整数值的结果,但从 java 中的 jComboBox 获取加法或乘法运算符

javascript - 启用禁用按钮的jquery函数