0

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

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

  1. 不同类型的技能表现不同。
    有些买了一次,有些买了好几次,有些可以选择等等
  2. 不同的类别包含不同的技能。
    例如,武器技能类别有不同类型的武器,但护甲技能位于不同的部分。

我已经看到了一个非常好的示例,它通过单元格渲染器将 ComboBox 附加到树中的每个节点。这是我找到的示例。

我理解上面的代码,但我看不到如何将组合框附加到节点,而不是树?我已经阅读了“如何使用 Trees ”,然后运行并查看了一些tree 演示的代码。我可以制作基本的树,但我发现教程有点迟钝,并且缺乏足够的细节来让自己弄清楚如何进行。我发现了另一个仅将叶节点呈现为复选框的示例,这要复杂得多。

显然我想将两者结合起来,能够拥有不同的类别能够拥有不同的技能,并且不同的技能具有不同的熟练程度。但是,我能想到的唯一方法是为不同的类型提供不同的 JComboBoxModel,但我不知道该怎么做,我也不知道怎么做。我试图编辑复选框示例以使用 ComboBoxes,但对于我的生活,我无法弄清楚。

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

4

2 回答 2

3

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

于 2012-08-03T11:25:42.513 回答
1

是一个很好的起点吗?

从概念上讲,是的。两者都JTable使用JTree享元模式来渲染和编辑单元格/节点。

  • 这个例子引用了一个基本的TreeCellRenderer.
  • 示例TreeCellEditor说明了使用默认渲染器的简单方法。
  • 示例显示了一个Outline包含JTable和的功能的视图JTree

图片

于 2012-08-03T19:33:28.897 回答