2010-06-10 73 views
1

我需要一个Swing组件,它可以让我显示一个树形结构的项目列表,并允许用户选择或取消选择这些项目的任意子集,通过挑选该子树的父项来选择或取消选择整个子树的组件价值。 (基本上类似于Eclipse的“导出JAR文件的”对话的东西(相关对话框的图像是here - 我基本上要“选择资源出口”成分,但对于一个Swing应用程序)如何在Swing中实现分层的“选择树”? (或者:是否有现有的实现?)

alt text http://i40.tinypic.com/6ylbvr.jpg

我知道我可以通过创建一个自定义的TreeCellRenderer,一个自定义的TreeCellEditor和一个自定义的TreeModel来做到这一点 - 但这看起来像是一个非常多的工作。是否有任何可以使用的现成的实现?

谢谢!

回答

2

你也可以看看JIDE components看看他们是否有类似的东西。

+1

JIDE Common图层包含CheckBoxTree并且是开源的。 – Mark 2010-06-10 20:52:59

+0

Bingo - CheckBoxTree *正是*我所需要的。谢谢! – Sbodd 2010-06-11 16:55:06

1

听起来就像你在说话ab出JTree。它通常用于显示分层数据,如文件结构,但可以修改它以完成其他操作。

http://java.sun.com/docs/books/tutorial/uiswing/components/tree.html

http://java.sun.com/javase/6/docs/api/javax/swing/JTree.html

+0

看起来疲惫不堪,而我甚至没有看到你已经标记了jTree。据我所知这是做这件事的最好方法。很抱歉告诉你一些你已经知道的事情。 – Mike 2010-06-10 18:18:54

+0

传统+1;链接已更新。 – trashgod 2010-06-10 18:30:51

+0

:)这不是传统,谷歌每次给你1.4的结果(因为他们更连接我猜)替换's/1.4.2/6'使用给你404,但我猜Sun(叹气,甲骨文)注意到趋势,现在将您重定向到正确的一个。 :...只是...如果有人想知道:P – OscarRyz 2010-06-10 18:38:01

1

我会考虑NetBeans的Outline。因为它从JTable下降,所以您可以指定包含子树和叶节点的多个选择。

outline.getSelectionModel().setSelectionMode(
    ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); 

附录:看看你的照片,你可能可以使用CheckRenderDataProvider

+0

+1代替:P – OscarRyz 2010-06-10 18:39:22