树选择的状态由一组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
FieldsModifier and TypeFieldDescriptionstatic final int选择只能是连续的。static final int选择可以包含任意数量的不一定连续的项目。static final int选择一次只能包含一个路径。 -
Method Summary
Modifier and TypeMethodDescriptionvoid向监听器列表中添加PropertyChangeListener。voidaddSelectionPath(TreePath path) 将路径添加到当前选择。voidaddSelectionPaths(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[]返回当前所选行的所有行。booleanisPathSelected(TreePath path) 如果路径path在当前选择中,则返回true。booleanisRowSelected(int row) 如果由row标识的行被选择,则返回true。boolean如果选择当前为空,则返回true。void从监听器列表中移除PropertyChangeListener。voidremoveSelectionPath(TreePath path) 从选择中移除路径。voidremoveSelectionPaths(TreePath[] paths) 从选择中移除路径。void从每次所选TreePaths集合更改时通知的监听器列表中移除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) 将选择设置为路径。
-
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- 要移除的监听器
-