我有一个 JTree,我正在为我正在编写的游戏数据库程序填充技能。
有几个类别和子类别(实际技能),然后将技能级别设置为低于该类别(有时)。目前,我正在使用一个技能类别、内部的一些选项和一些枚举来模拟这一点,再加上一种检查技能是否属于类别(称为 isCategory)的方法。另外两点需要注意:
- 不同类型的技能表现不同。
有些技能只能购买一次,有些则需要多次购买,有些可以选择等等 - 不同的类别包含不同的技能。
例如,武器技能类别有不同类型的武器,但装甲技能位于不同的部分。
我见过一个非常好的例子,通过单元格渲染器将 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/