- 所有已知的实现类:
DefaultTreeSelectionModel,JTree.EmptySelectionModel
树选择的状态由一组 TreePaths 和可选的一组整数来表征。从 TreePath 到整数的映射是通过 RowMapper 的实例完成的。 TreeSelectionModel 不一定要有 RowMapper 才能正确运行,但没有 RowMapper getSelectionRows 将返回 null。
可以将 TreeSelectionModel 配置为仅允许一条路径 (SINGLE_TREE_SELECTION)、多条连续路径 (CONTIGUOUS_TREE_SELECTION) 或多条不连续路径 (DISCONTIGUOUS_TREE_SELECTION)。 RowMapper 用于确定 TreePaths 是否连续。在没有 RowMapper 的情况下,CONTIGUOUS_TREE_SELECTION 和 DISCONTIGUOUS_TREE_SELECTION 的行为相同,即它们允许在 TreeSelectionModel 中包含任意数量的路径。
对于 CONTIGUOUS_TREE_SELECTION 的选择模型,任何时候路径更改(setSelectionPath、addSelectionPath ...)都会再次检查 TreePaths 以确保它们是连续的。也可以通过调用 resetRowSelection 强制检查 TreePaths。如何将一组不连续的 TreePaths 映射到一个连续的集合留给这个接口的实现者来执行特定的策略。
实现应该合并添加到选择中的重复 TreePath。例如下面的代码
TreePath[] paths = new TreePath[] { treePath, treePath };
treeSelectionModel.setSelectionPaths(paths);
应该只选择一个路径:treePath,而不是 treePath 的两个副本。
引导 TreePath 是最后添加(或设置)的路径。前导行是对应于从 RowMapper 确定的 TreePath 的行。
-
字段摘要
字段修饰符和类型Field描述static final int选择只能是连续的。static final int选择可以包含任意数量的不一定连续的项目。static final int选择一次只能包含一个路径。 -
方法总结
修饰符和类型方法描述void将 PropertyChangeListener 添加到监听列表。voidaddSelectionPath(TreePath path) 将路径添加到当前选择。voidaddSelectionPaths(TreePath[] paths) 将路径添加到当前选择。void将 x 添加到监听列表中,每次选定的 TreePath 集更改时都会通知这些监听。void清空当前选择。返回最后添加的路径。int返回潜在客户选择索引。int返回从 RowMapper 获得的当前选定 TreePath 集的最大值。int返回从 RowMapper 获得的当前选定 TreePath 集的最小值。返回能够将 TreePath 映射到行的 RowMapper 实例。int返回选择的路径数。int返回当前选择模式,SINGLE_TREE_SELECTION、CONTIGUOUS_TREE_SELECTION或DISCONTIGUOUS_TREE_SELECTION之一。返回选择中的第一条路径。TreePath[]返回选择中的路径。int[]返回所有当前选定的行。booleanisPathSelected(TreePath path) 如果路径path在当前选择中,则返回 true。booleanisRowSelected(int row) 如果选择了row标识的行,则返回 true。boolean如果选择当前为空,则返回 true。void从监听列表中删除 PropertyChangeListener。voidremoveSelectionPath(TreePath path) 从选择中删除路径。voidremoveSelectionPaths(TreePath[] paths) 从选择中删除路径。void从每次选定的 TreePath 集更改时通知的监听列表中删除 x。void更新此对象从 TreePaths 到行的映射。voidsetRowMapper(RowMapper newMapper) 设置 RowMapper 实例。voidsetSelectionMode(int mode) 设置选择模型,它必须是 SINGLE_TREE_SELECTION、CONTIGUOUS_TREE_SELECTION 或 DISCONTIGUOUS_TREE_SELECTION 之一。voidsetSelectionPath(TreePath path) 将选择设置为路径。voidsetSelectionPaths(TreePath[] paths) 将选择设置为路径。
-
字段详细信息
-
SINGLE_TREE_SELECTION
static final int SINGLE_TREE_SELECTION选择一次只能包含一个路径。- 参见:
-
CONTIGUOUS_TREE_SELECTION
static final int CONTIGUOUS_TREE_SELECTION选择只能是连续的。仅当提供 RowMapper 实例时才会执行此操作。也就是说,如果未设置 RowMapper,则其行为与 DISCONTIGUOUS_TREE_SELECTION 相同。- 参见:
-
DISCONTIGUOUS_TREE_SELECTION
static final int DISCONTIGUOUS_TREE_SELECTION选择可以包含任意数量的不一定连续的项目。- 参见:
-
-
方法详情
-
setSelectionMode
void setSelectionMode(int mode) 设置选择模型,它必须是 SINGLE_TREE_SELECTION、CONTIGUOUS_TREE_SELECTION 或 DISCONTIGUOUS_TREE_SELECTION 之一。如果当前选择对新模式无效,这可能会更改选择。例如,如果在模式更改为
SINGLE_TREE_SELECTION时选择了三个 TreePath,则只会保留一个 TreePath。由特定的实现来决定什么 TreePath 保持选中状态。- 参数:
mode- 要设置的选择模式
-
getSelectionMode
int getSelectionMode()返回当前选择模式,SINGLE_TREE_SELECTION、CONTIGUOUS_TREE_SELECTION或DISCONTIGUOUS_TREE_SELECTION之一。- 返回:
- 当前选择模式
-
setSelectionPath
将选择设置为路径。如果这表示更改,则通知 TreeSelectionListeners。如果path为空,这与调用clearSelection具有相同的效果。- 参数:
path- 选择的新路径
-
setSelectionPaths
将选择设置为路径。如果这表示更改,则通知 TreeSelectionListeners。如果paths为空,这与调用clearSelection具有相同的效果。- 参数:
paths- 新选择
-
addSelectionPath
将路径添加到当前选择。如果路径当前不在选择中,则会通知 TreeSelectionListeners。如果path为空,则这没有影响。- 参数:
path- 添加到当前选择的新路径
-
addSelectionPaths
将路径添加到当前选择。如果路径中的任何路径当前不在选择中,则会通知 TreeSelectionListeners。如果paths为 null,则此操作无效。- 参数:
paths- 添加到当前选择的新路径
-
removeSelectionPath
从选择中删除路径。如果路径在选择中,则通知 TreeSelectionListeners。如果path为空,则这没有影响。- 参数:
path- 从选择中移除的路径
-
removeSelectionPaths
从选择中删除路径。如果paths中的任何路径在选择中,则会通知 TreeSelectionListeners。如果paths为空,则此方法无效。- 参数:
paths- 从选择中移除的路径
-
getSelectionPath
TreePath getSelectionPath()返回选择中的第一条路径。如何首先定义取决于实现者,并且不一定是根据RowMapper确定的具有最小整数值的 TreePath。- 返回:
- 选择中的第一条路径
-
getSelectionPaths
TreePath [] getSelectionPaths()返回选择中的路径。如果当前未选择任何内容,这将返回 null(或空数组)。- 返回:
- 选择中的路径
-
getSelectionCount
int getSelectionCount()返回选择的路径数。- 返回:
- 选择的路径数
-
isPathSelected
如果路径path在当前选择中,则返回 true。- 参数:
path- 要查找的路径- 返回:
path是否在当前选择中
-
isSelectionEmpty
boolean isSelectionEmpty()如果选择当前为空,则返回 true。- 返回:
- 当前选择是否为空
-
clearSelection
void clearSelection()清空当前选择。如果这表示当前选择发生变化,则会通知选择监听。 -
setRowMapper
设置 RowMapper 实例。此实例用于确定特定 TreePath 的行。- 参数:
newMapper- 要设置的 RowMapper
-
getRowMapper
RowMapper getRowMapper()返回能够将 TreePath 映射到行的 RowMapper 实例。- 返回:
- 能够将 TreePath 映射到行的 RowMapper 实例
-
getSelectionRows
int[] getSelectionRows()返回所有当前选定的行。如果没有选定的 TreePaths 或尚未设置 RowMapper,这将返回 null(或空数组)。- 返回:
- 当前选择的所有行
-
getMinSelectionRow
int getMinSelectionRow()返回从 RowMapper 获得的当前选定 TreePath 集的最小值。如果未选择任何内容,或者没有 RowMapper,则返回 -1。- 返回:
- 从 RowMapper 获得的当前选定 TreePath 集合的最小值
-
getMaxSelectionRow
int getMaxSelectionRow()返回从 RowMapper 获得的当前选定 TreePath 集的最大值。如果未选择任何内容,或者没有 RowMapper,则返回 -1。- 返回:
- 从 RowMapper 获得的当前选定 TreePath 集合的最大值
-
isRowSelected
boolean isRowSelected(int row) 如果选择了row标识的行,则返回 true。- 参数:
row- 要检查的行- 返回:
- 行是否被选中
-
resetRowSelection
void resetRowSelection()更新此对象从 TreePaths 到行的映射。这应该在从 TreePaths 到整数的映射发生变化时调用(例如,一个节点已经展开)。您通常不必调用它; JTree 及其关联的监听将为您调用它。如果您要实现自己的视图类,则必须调用它。
-
getLeadSelectionRow
int getLeadSelectionRow()返回潜在客户选择索引。这是最后添加的索引。- 返回:
- 铅选择指数
-
getLeadSelectionPath
TreePath getLeadSelectionPath()返回最后添加的路径。这可能不同于 JTree 维护的 leadSelectionPath 属性。- 返回:
- 最后添加的路径
-
addPropertyChangeListener
将 PropertyChangeListener 添加到监听列表。监听已为所有属性注册。选择模式更改时将触发 PropertyChangeEvent。
- 参数:
listener- 要添加的 PropertyChangeListener
-
removePropertyChangeListener
从监听列表中删除 PropertyChangeListener。这将删除为所有属性注册的 PropertyChangeListener。- 参数:
listener- 要删除的 PropertyChangeListener
-
addTreeSelectionListener
将 x 添加到监听列表中,每次选定的 TreePath 集更改时都会通知这些监听。- 参数:
x- 要添加的新监听器
-
removeTreeSelectionListener
从每次选定的 TreePath 集更改时通知的监听列表中删除 x。- 参数:
x- 要删除的监听器
-