树选择的状态由一组TreePaths和可选的一组整数来描述。通过RowMapper的实例来完成从TreePath到整数的映射。一个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映射到连续集合由此接口的实现者来执行特定策略。
实现应该合并添加到选择中的重复TreePaths。例如,以下代码
TreePath[] paths = new TreePath[] { treePath, treePath }; treeSelectionModel.setSelectionPaths(paths);应该导致只选择一个路径:
treePath
,而不是两个treePath
的副本。
主要TreePath是最后添加(或设置)的路径。然后,主要行是根据RowMapper从TreePath确定的行。
-
Field Summary
Modifier and TypeFieldDescriptionstatic final int
选择只能是连续的。static final int
选择可以包含任意数量的不一定连续的项目。static final int
选择一次只能包含一个路径。 -
Method Summary
Modifier and TypeMethodDescriptionvoid
向监听器列表中添加PropertyChangeListener。void
addSelectionPath
(TreePath path) 将路径添加到当前选择。void
addSelectionPaths
(TreePath[] paths) 将路径添加到当前选择。void
将x添加到每次所选TreePaths集合更改时通知的监听器列表中。void
清空当前选择。返回最后添加的路径。int
返回主要选择索引。int
返回当前所选TreePaths集合的RowMapper获取的最大值。int
返回当前所选TreePaths集合的RowMapper获取的最小值。返回能够将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
从每次所选TreePaths集合更改时通知的监听器列表中移除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) 将选择设置为路径。
-
Field Details
-
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选择可以包含任意数量的不一定连续的项目。- 参见:
-
-
Method Details
-
setSelectionMode
void setSelectionMode(int mode) 设置选择模型,必须是SINGLE_TREE_SELECTION、CONTIGUOUS_TREE_SELECTION或DISCONTIGUOUS_TREE_SELECTION之一。如果当前选择对新模式无效,则可能会更改选择。例如,如果在将模式更改为
SINGLE_TREE_SELECTION
时选择了三个TreePaths,则只会保留一个TreePath被选择。具体保留哪个TreePath由特定实现决定。- 参数:
-
mode
- 要设置的选择模式
-
getSelectionMode
int getSelectionMode()返回当前选择模式,其中之一为SINGLE_TREE_SELECTION
、CONTIGUOUS_TREE_SELECTION
或DISCONTIGUOUS_TREE_SELECTION
。- 返回:
- 当前选择模式
-
setSelectionPath
将选择设置为路径。如果这代表一种更改,则会通知TreeSelectionListeners。如果path
为null,则效果与调用clearSelection
相同。- 参数:
-
path
- 要选择的新路径
-
setSelectionPaths
将选择设置为路径。如果这代表一种更改,则会通知TreeSelectionListeners。如果paths
为null,则效果与调用clearSelection
相同。- 参数:
-
paths
- 新选择
-
addSelectionPath
将路径添加到当前选择。如果路径当前不在选择中,则会通知TreeSelectionListeners。如果path
为null,则不会产生任何效果。- 参数:
-
path
- 要添加到当前选择中的新路径
-
addSelectionPaths
将路径添加到当前选择。如果路径中的任何路径当前不在选择中,则会通知TreeSelectionListeners。如果paths
为null,则不会产生任何效果。- 参数:
-
paths
- 要添加到当前选择中的新路径
-
removeSelectionPath
从选择中移除路径。如果路径在选择中,则会通知TreeSelectionListeners。如果path
为null,则不会产生任何效果。- 参数:
-
path
- 要从选择中移除的路径
-
removeSelectionPaths
从选择中移除路径。如果paths
中的任何路径在选择中,则会通知TreeSelectionListeners。如果paths
为null,则此方法不会产生任何效果。- 参数:
-
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()返回当前所选TreePaths集合的RowMapper获取的最小值。如果没有选中任何内容,或者没有RowMapper,则将返回-1。- 返回:
- 当前所选TreePaths集合的RowMapper获取的最小值
-
getMaxSelectionRow
int getMaxSelectionRow()返回当前选定的TreePaths集合中从RowMapper获取的最大值。如果没有选定任何内容,或者没有RowMapper,则返回-1。- 返回:
- 当前选定的TreePaths集合中从RowMapper获取的最大值
-
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添加到每次选定的TreePaths集合发生变化时通知的监听器列表中。- 参数:
-
x
- 要添加的新监听器
-
removeTreeSelectionListener
从每次选定的TreePaths集合发生变化时通知的监听器列表中移除x。- 参数:
-
x
- 要移除的监听器
-