public interface TreeSelectionModel
此接口表示树选择组件的当前状态。有关使用树选择模型的信息和示例,请参阅 The Java Tutorial 中的 How to Use Trees 一节。
树选择的状态由 TreePath 集合描述,也可以是整数集合。从 TreePath 到整数的映射通过 RowMapper 实例的方式完成。TreeSelectionModel 不一定具有 RowMapper 才可以正确地操作,但是,没有 RowMapper 的情况下,getSelectionRows
将返回 null。
可以将 TreeSelectionModel 配置为只允许一条路径 (SINGLE_TREE_SELECTION
)、多条连续路径 (CONTIGUOUS_TREE_SELECTION
) 或多条不连续的路径 (DISCONTIGUOUS_TREE_SELECTION
)。RowMapper
用于确定 TreePath 是否为连续。没有 RowMapper 时,CONTIGUOUS_TREE_SELECTION
和 DISCONTIGUOUS_TREE_SELECTION
的功能相同,即都允许在 TreeSelectionModel 中包含任何数量的路径。
对于 CONTIGUOUS_TREE_SELECTION
选择模型,路径在任何时候更改时(通过 setSelectionPath
、addSelectionPath
...),都将重新检查 TreePath,以使它们保持连续。通过调用 resetRowSelection
,也可以强制检查 TreePath。如何将一组不连续的 TreePath 映射到连续集合要通过此实例的实现者强制执行特定的策略来完成。
实现应对添加到该选择中的重复 TreePath 进行组合。例如,以下代码
TreePath[] paths = new TreePath[] { treePath, treePath }; treeSelectionModel.setSelectionPaths(paths);会导致仅选择一个路径:
treePath
,而不是
treePath
的两个副本。
前导 TreePath 是添加(或设置)的最后一个路径。前导行则是对应于 TreePath 的行,由 RowMapper 确定。
字段摘要 | |
---|---|
static int |
CONTIGUOUS_TREE_SELECTION 选择只能是连续的。 |
static int |
DISCONTIGUOUS_TREE_SELECTION 选择可以包含任何数量的项,这些项不必是连续的。 |
static int |
SINGLE_TREE_SELECTION 一次只能选择一个路径。 |
方法摘要 | |
---|---|
void |
addPropertyChangeListener(PropertyChangeListener listener) 将一个 PropertyChangeListener 添加到侦听器列表中。 |
void |
addSelectionPath(TreePath path) 将路径添加到当前的选择中。 |
void |
addSelectionPaths(TreePath[] paths) 向当前的选择中添加路径。 |
void |
addTreeSelectionListener(TreeSelectionListener x) 向侦听器列表添加 x,每次选定的 TreePath 集合发生更改时,这些侦听器都会得到通知。 |
void |
clearSelection() 清空当前的选择。 |
TreePath |
getLeadSelectionPath() 返回添加的最后一个路径。 |
int |
getLeadSelectionRow() 返回前导选择索引。 |
int |
getMaxSelectionRow() 返回从 RowMapper 获取的已选的 TreePath 当前集合中的最大值。 |
int |
getMinSelectionRow() 返回从 RowMapper 获取的已选的 TreePath 当前集合中的最小值。 |
RowMapper |
getRowMapper() 返回能够将 TreePath 映射到行的 RowMapper 实例。 |
int |
getSelectionCount() 返回选择的路径数。 |
int |
getSelectionMode() 返回当前选择的模式( SINGLE_TREE_SELECTION 、CONTIGUOUS_TREE_SELECTION 或 DISCONTIGUOUS_TREE_SELECTION 之一)。 |
TreePath |
getSelectionPath() 返回选择中的第一个路径。 |
TreePath[] |
getSelectionPaths() 返回选择中的路径。 |
int[] |
getSelectionRows() 返回所有当前已选的行。 |
boolean |
isPathSelected(TreePath path) 如果路径 path 在当前的选择中,则返回 true。 |
boolean |
isRowSelected(int row) 如果选择了由 row 标识的行,则返回 true。 |
boolean |
isSelectionEmpty() 如果选择当前为空,则返回 true。 |
void |
removePropertyChangeListener(PropertyChangeListener listener) 从侦听器列表移除一个 PropertyChangeListener。 |
void |
removeSelectionPath(TreePath path) 从选择中移除路径。 |
void |
removeSelectionPaths(TreePath[] paths) 从选择中移除路径。 |
void |
removeTreeSelectionListener(TreeSelectionListener x) 从每次已选的 TreePath 集合发生更改时都会得到通知的侦听器列表中移除 x。 |
void |
resetRowSelection() 更新此对象从 TreePath 到行的映射关系。 |
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) 为该选择设置路径。 |
字段详细信息 |
---|
static final int SINGLE_TREE_SELECTION
static final int CONTIGUOUS_TREE_SELECTION
static final int DISCONTIGUOUS_TREE_SELECTION
方法详细信息 |
---|
void setSelectionMode(int mode)
如果对于新的模式当前选择无效,则此方法可以更改这一选择。例如,如果将模式更改为 SINGLE_TREE_SELECTION
时选中三个 TreePath,则只有一个 TreePath 仍然被选中。由特定的实现来决定保留选定哪一个 TreePath。
int getSelectionMode()
SINGLE_TREE_SELECTION
、
CONTIGUOUS_TREE_SELECTION
或
DISCONTIGUOUS_TREE_SELECTION
之一)。
void setSelectionPath(TreePath path)
path
为 null,则这与调用
clearSelection
具有相同的效果。
path
- 要选择的新路径
void setSelectionPaths(TreePath[] paths)
paths
为 null,则这与调用
clearSelection
具有相同的效果。
paths
- 新的选择
void addSelectionPath(TreePath path)
path
为 null,则此方法无效。
path
- 添加到当前选择中的新路径
void addSelectionPaths(TreePath[] paths)
paths
为 null,则通此方法无效。
paths
- 添加到当前选择的新路径
void removeSelectionPath(TreePath path)
path
为 null,则此方法无效。
path
- 要从选择中移除的路径
void removeSelectionPaths(TreePath[] paths)
paths
中的任何路径在选择中,则通知 TreeSelectionListener。如果
paths
为 null,则此方法无效。
paths
- 要从选择中移除的路径
TreePath getSelectionPath()
RowMapper
确定的具有最小整数值的 TreePath。
TreePath[] getSelectionPaths()
int getSelectionCount()
boolean isPathSelected(TreePath path)
path
在当前的选择中,则返回 true。
boolean isSelectionEmpty()
void clearSelection()
void setRowMapper(RowMapper newMapper)
RowMapper getRowMapper()
int[] getSelectionRows()
int getMinSelectionRow()
int getMaxSelectionRow()
boolean isRowSelected(int row)
row
标识的行,则返回 true。
void resetRowSelection()
通常不必调用此方法;JTree 及其相关的侦听器将为您调用它。如果您正在实现自已的 view 类,则必须调用它。
int getLeadSelectionRow()
TreePath getLeadSelectionPath()
void addPropertyChangeListener(PropertyChangeListener listener)
当选择模式更改时,将触发 PropertyChangeEvent。
listener
- 要添加的 PropertyChangeListener
void removePropertyChangeListener(PropertyChangeListener listener)
listener
- 要移除的 PropertyChangeListener
void addTreeSelectionListener(TreeSelectionListener x)
x
- 要添加的新侦听器
void removeTreeSelectionListener(TreeSelectionListener x)
x
- 要移除的侦听器