如何为每个JTree节点添加不同的JComboBox?
我有一个JTree,我正在填写我正在编写的游戏数据库程序的技能。
有几个类别和子类别(实际技能),然后是水平技能(有时)。 目前我正在使用一个技能类,内部的一些选项和一些枚举来模拟这个,还有一个方法来检查技能是否属于一个类别(称为isCategory)。 还有两点需要注意:
- 不同类型的技能表现不同。
有些是一次购买,有几次购买,有些可以选择等 - 不同类别包含不同的技能。
例如,武器技能类别有不同类型的武器,但装甲技能在不同的部分。
我已经看到了通过单元格渲染器将ComboBox附加到树中每个节点的非常好的示例。 这是我找到的例子 。
我理解上面的代码,但我看不出如何将combobox附加到节点,而不是树? 我已经阅读了“ 如何使用树木 ”,并且我已经运行了,并查看了一些树的演示代码。 我可以制作基本的树,但是我发现教程有点迟钝,缺乏足够的细节来弄清楚自己如何继续。 我发现了另一个仅将叶节点渲染为复选框的示例 ,这要复杂得多。
显然我想把两者结合起来,能够拥有不同的类别,能够拥有不同的技能,不同的技能有不同的熟练程度。 然而,我能想到这样做的唯一方法是为不同的类型设置不同的JComboBoxModel但我不知道如何做到这一点,我无法找到方法。 我试图编辑复选框示例以使用ComboBoxes,但对于我的生活我无法理解。
有人可以给我一个提示,告诉我采取什么方法,因为我是Java的新手并且在努力弄清楚要做什么?
这是一个好的起点吗?
从概念上讲,是的。 JTable
和JTree
使用flyweight模式来渲染和编辑单元/节点。
- 此示例引用了一个基本的
TreeCellRenderer
。 - 此示例说明了使用默认渲染器的简单
TreeCellEditor
。 - 此示例显示了包含
JTable
和JTree
function的Outline
视图。
您应该实现TreeCellRenderer
以及TreeCellEditor
。 两者都应该返回不同型号的JComboBox
。 选择哪种模型应根据value参数(实际上是树节点)在getTreeCellEditorComponent
/ getTreeCellRenderingComponent
决定。