我有一个JTree,我正在填写我正在写的游戏数据库程序的技能。
有几个类别和子类别(实际技能),然后是水平技能(有时)。目前我正在使用一个技能类,一些内部选项和一些枚举来模拟这一点,另外还有一种检查技能是否属于类别(称为isCategory)的方法。还有两点需要注意:
我已经看到了通过单元格渲染器将ComboBox附加到树中每个节点的非常好的示例。这是我找到的example。
我理解上面的代码,但我看不出如何将组合框附加到节点,而不是树?我已经阅读了“How to use Trees”,并且已经运行了,并查看了demos for tree中的一些代码。我可以制作基本的树,但我发现教程有点迟钝,缺乏足够的细节来弄清楚自己如何继续。我发现另一个example仅渲染叶子节点作为复选框,这要复杂得多。
显然,我想将两者结合起来,能够拥有不同类别,能够拥有不同技能,不同技能具有不同的熟练程度。然而,我能想到这样做的唯一方法是为不同的类型设置不同的JComboBoxModel,但我不知道如何做到这一点,我无法找到方法。我试图编辑复选框示例以使用ComboBoxes,但对于我的生活我无法理解。
有人可以给我一个提示,告诉我采取什么方法,因为我是Java的新手并且在努力弄清楚要做什么?
答案 0 :(得分:3)
您应该实施TreeCellRenderer
以及TreeCellEditor
。两者都应该使用不同的模型返回JComboBox
。选择哪种模型应根据值参数(实际上是树节点)在getTreeCellEditorComponent
/ getTreeCellRenderingComponent
中决定。
答案 1 :(得分:1)