代码之家  ›  专栏  ›  技术社区  ›  Amit

自定义Java JTree实现

  •  1
  • Amit  · 技术社区  · 15 年前

    有两个 JTree : JTree1 JTree2 .请注意节点(国家、城市、颜色、蓝色…)所有这些都将按计划实施 JCheckbox 这样用户可以通过选择相应的复选框为每个城市或整个国家选择特定的颜色。

    问题:

    问题1。 我希望每个国家或城市都可以选择自己的颜色。意味着如果用户想要 city1.1 有蓝色、紫色和蓝色 city2.1 要使颜色为红色,他首先必须选择 城市1。1. 复选框,然后选择蓝色和紫色,然后当他选择 城市2。1. ,然后自动取消选中蓝色和紫色复选框,以便用户可以为其选择颜色 城市2。1. .但是当用户选择 城市1。1. 再说一次,然后 JTree2 应显示城市1的选定颜色(蓝色和紫色)。1.

    • 因此,JTree(其节点作为复选框)是正确的实现选项,还是应该使用其他选项 JComponent ?

    • 如果JTree是一个正确的选项,那么我怎么能记住每个城市的颜色呢?

    1 回复  |  直到 5 年前
        1
  •  2
  •   Klarth    15 年前

    因此,JTree (将其节点作为复选框)正确 选项来实现,或者我应该使用 还有其他的组件吗?

    我不太清楚你的意思,但我个人不会使用 JTree 在右边展示选项。我认为展示一个 JPanel 包含此特定情况下的选项。对于你的例子来说,左边看起来很好,尽管我真的不知道什么样的数据会进入树中。

    如果JTree是一个正确的选项,那么如何选择呢 我能记得每种颜色吗 城市

    注意,我要做几个假设:

    1. 左侧包含您所在国家和城市的区域仍然是 树形结构 右手边仍然可以是 树形结构 或者 面板 .
    2. 您希望这些选项与用户在左侧选择其他节点之前上次设置的选项完全相同。

    实现这一点的最简单方法是添加 TreeSelectionListener 到树的(包含国家和城市的)选择模型。这个 树选择监听器 提供了一个 TreeSelectionEvent 它提供了 选定的节点,并将 成为 挑选出来的。这将使您有机会提取为正在更改选择的节点设置的颜色设置 从…起 选择正在更改的对象 这个 树选择监听器 应该添加到 TreeSelectionModel 这是从 树形结构 ,称其为 getSelectionModel 方法

    如果使用此技术,当您要使用最后选择的选项执行操作时,您需要在执行操作之前再获取一次选项。例如,如果您有一个“保存”按钮,则应选中“提取左侧选定节点的颜色设置”。这是为了捕获用户可能已经做出的、但监听器尚未捕获的任何更改(因为只有在左手选择更改时才会触发监听器)。

    如果你需要一个例子,我已经在 http://www.box.net/shared/hgbet4uf6k .