【问题标题】:Custom Java JTree implementation自定义 Java JTree 实现
【发布时间】:2011-01-25 07:43:18
【问题描述】:

有 2 个JTreeJTree1JTree2。请注意,节点(国家、城市、颜色、蓝色...)都将实现为JCheckboxes,以便用户可以通过选择相应的复选框为每个城市或整个国家选择特定的颜色。

问题:

Q1. 我希望每个国家或城市都可以选择自己的颜色。表示如果用户希望city1.1 具有蓝色和紫色,city2.1 具有红色,那么他首先必须选中city1.1 复选框,然后选择蓝色和紫色,然后当他选择city2.1 ,然后复选框蓝色和紫色将自动取消选中,以便用户可以选择city2.1 的颜色。但是当用户再次选择city1.1 时,JTree2 应该会显示 city1.1 的选定颜色(蓝色和紫色)​​。

  • 因此,出于此目的,JTree(其节点作为复选框)是正确的选项,还是我应该使用其他一些 JComponent

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

【问题讨论】:

    标签: java swing user-interface jtree jcomponent


    【解决方案1】:

    所以为了这个目的,是 JTree (其节点作为复选框)正确 实施的选项,或者我应该使用 其他一些 JComponent?

    不完全确定您的意思,但我个人不会使用JTree 来显示右侧的选项。我认为在这种特殊情况下提供包含选项的JPanel 要简单得多。对于您的示例,左侧似乎很好,尽管我真的不知道将哪种数据放入树中。

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

    注意,我将做几个假设:

    1. 包含您的国家和城市的左侧仍然是JTree,而右侧仍然可以是JTreeJPanel
    2. 您希望选项在用户选择左侧的其他节点之前完全按照用户上次设置的方式显示。

    实现此目的的最简单方法是将TreeSelectionListener 添加到树(包含国家和城市的树)选择模型中。为TreeSelectionListener 提供了一个TreeSelectionEvent,它提供了选中的节点和将成为选中的节点。这将使您有机会提取为选择更改到选择更改的节点设置的颜色设置。应将TreeSelectionListener 添加到从JTree 获得的TreeSelectionModel 中,方法是调用其getSelectionModel 方法。

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

    如果您需要示例,我已经在http://www.box.net/shared/hgbet4uf6k 写了一个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-30
      • 1970-01-01
      • 2014-05-24
      • 1970-01-01
      • 2011-10-31
      • 1970-01-01
      • 2015-08-07
      • 1970-01-01
      相关资源
      最近更新 更多