自定义Java JTree实现

自定义Java JTree实现,java,swing,user-interface,jtree,jcomponent,Java,Swing,User Interface,Jtree,Jcomponent,有两个JTree:JTree1和JTree2。请注意,节点(国家、城市、颜色、蓝色…)都将实现为JCheckboxes,以便用户可以通过选择相应的复选框为每个城市或整个国家选择特定的颜色 问题: 问题1。我希望每个国家或城市都可以选择自己的颜色。表示如果用户希望城市1.1的颜色为蓝色和紫色,city2.1的颜色为红色,则必须先选中城市1.1的复选框,然后选择蓝色和紫色,然后再选择城市2.1的颜色,然后自动取消选中蓝色和紫色复选框,以便用户可以选择city2.1的颜色。但是当用户再次选择city1

有两个
JTree
JTree1
JTree2
。请注意,节点(国家、城市、颜色、蓝色…)都将实现为
JCheckbox
es,以便用户可以通过选择相应的复选框为每个城市或整个国家选择特定的颜色

问题: 问题1。我希望每个国家或城市都可以选择自己的颜色。表示如果用户希望城市1.1的颜色为蓝色和紫色,
city2.1的颜色为红色,则必须先选中城市1.1的复选框,然后选择蓝色和紫色,然后再选择城市2.1的颜色,然后自动取消选中蓝色和紫色复选框,以便用户可以选择
city2.1
的颜色。但是当用户再次选择
city1.1
时,则
JTree2
应显示city1.1的所选颜色(蓝色和紫色)

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

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

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

不太清楚你的意思,但我个人不会用a来表示右边的选项。我认为在这个特殊情况下,提供一个包含选项的方法要简单得多。对于您的示例,左侧似乎很好,尽管我不知道什么样的数据进入树中

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

注意,我要做几个假设:

  • 包含国家和城市的左侧仍然是a,右侧仍然可以是a或a
  • 您希望选项与用户在左侧选择其他节点之前上次设置的选项完全相同
  • 实现这一点的最简单方法是在树的(包含国家和城市的)选择模型中添加一个。提供了一个,它提供了已选择的节点和将要选择的节点。这将为您提供一个机会,将为选择正在更改的节点设置的颜色设置从提取到选择正在更改的节点。应通过调用其方法将添加到从获取的

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

    如果你需要一个例子,我已经写了一个