- 所有已知的实现类:
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 添加到监听列表。void
addSelectionPath
(TreePath path) 将路径添加到当前选择。void
addSelectionPaths
(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[]
返回所有当前选定的行。boolean
isPathSelected
(TreePath path) 如果路径path
在当前选择中,则返回 true。boolean
isRowSelected
(int row) 如果选择了row
标识的行,则返回 true。boolean
如果选择当前为空,则返回 true。void
从监听列表中删除 PropertyChangeListener。void
removeSelectionPath
(TreePath path) 从选择中删除路径。void
removeSelectionPaths
(TreePath[] paths) 从选择中删除路径。void
从每次选定的 TreePath 集更改时通知的监听列表中删除 x。void
更新此对象从 TreePaths 到行的映射。void
setRowMapper
(RowMapper newMapper) 设置 RowMapper 实例。void
setSelectionMode
(int mode) 设置选择模型,它必须是 SINGLE_TREE_SELECTION、CONTIGUOUS_TREE_SELECTION 或 DISCONTIGUOUS_TREE_SELECTION 之一。void
setSelectionPath
(TreePath path) 将选择设置为路径。void
setSelectionPaths
(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
- 要删除的监听器
-