javax.swing.tree

接口
异常
所有已知实现类:
DefaultTreeSelectionModel, JTree.EmptySelectionModel

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_SELECTIONDISCONTIGUOUS_TREE_SELECTION 的功能相同,即都允许在 TreeSelectionModel 中包含任何数量的路径。

对于 CONTIGUOUS_TREE_SELECTION 选择模型,路径在任何时候更改时(通过 setSelectionPathaddSelectionPath ...),都将重新检查 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_SELECTIONCONTIGUOUS_TREE_SELECTIONDISCONTIGUOUS_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)
          为该选择设置路径。
 

字段详细信息

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。


getSelectionMode

int getSelectionMode()
返回当前选择的模式( SINGLE_TREE_SELECTIONCONTIGUOUS_TREE_SELECTIONDISCONTIGUOUS_TREE_SELECTION 之一)。


setSelectionPath

void setSelectionPath(TreePath path)
为该选择设置路径。如果这表示一个更改,则通知 TreeSelectionListener。如果 path 为 null,则这与调用 clearSelection 具有相同的效果。

参数:
path - 要选择的新路径

setSelectionPaths

void setSelectionPaths(TreePath[] paths)
为该选择设置路径。如果这表示一个更改,则通知 TreeSelectionListener。如果 paths 为 null,则这与调用 clearSelection 具有相同的效果。

参数:
paths - 新的选择

addSelectionPath

void addSelectionPath(TreePath path)
将路径添加到当前的选择中。如果路径当前不在选择中,则通知 TreeSelectionListener。如果 path 为 null,则此方法无效。

参数:
path - 添加到当前选择中的新路径

addSelectionPaths

void addSelectionPaths(TreePath[] paths)
向当前的选择中添加路径。如果 paths 中的任何路径当前不在选择中,则通知 TreeSelectionListener。如果 paths 为 null,则通此方法无效。

参数:
paths - 添加到当前选择的新路径

removeSelectionPath

void removeSelectionPath(TreePath path)
从选择中移除路径。如果路径在选择中,则通知 TreeSelectionListener。如果 path 为 null,则此方法无效。

参数:
path - 要从选择中移除的路径

removeSelectionPaths

void removeSelectionPaths(TreePath[] paths)
从选择中移除路径。如果 paths 中的任何路径在选择中,则通知 TreeSelectionListener。如果 paths 为 null,则此方法无效。

参数:
paths - 要从选择中移除的路径

getSelectionPath

TreePath getSelectionPath()
返回选择中的第一个路径。第一个路径由实现者定义,不一定是由 RowMapper 确定的具有最小整数值的 TreePath。


getSelectionPaths

TreePath[] getSelectionPaths()
返回选择中的路径。如果当前没有选择任何内容,则返回 null(或一个空数组)。


getSelectionCount

int getSelectionCount()
返回选择的路径数。


isPathSelected

boolean isPathSelected(TreePath path)
如果路径 path 在当前的选择中,则返回 true。


isSelectionEmpty

boolean isSelectionEmpty()
如果选择当前为空,则返回 true。


clearSelection

void clearSelection()
清空当前的选择。如果这表示当前选择中的更改,则通知选择侦听器。


setRowMapper

void setRowMapper(RowMapper newMapper)
设置 RowMapper 实例。此实例用于确定特定 TreePath 的行。


getRowMapper

RowMapper getRowMapper()
返回能够将 TreePath 映射到行的 RowMapper 实例。


getSelectionRows

int[] getSelectionRows()
返回所有当前已选的行。如果没有已选的 TreePath 或没有设置 RowMapper,此方法将返回 null(或一个空数组)。


getMinSelectionRow

int getMinSelectionRow()
返回从 RowMapper 获取的已选的 TreePath 当前集合中的最小值。如果没有选定任何内容,或不存在 RowMapper,则返回 -1。


getMaxSelectionRow

int getMaxSelectionRow()
返回从 RowMapper 获取的已选的 TreePath 当前集合中的最大值。如果没有选定任何内容,或不存在 RowMapper,则返回 -1。


isRowSelected

boolean isRowSelected(int row)
如果选择了由 row 标识的行,则返回 true。


resetRowSelection

void resetRowSelection()
更新此对象从 TreePath 到行的映射关系。当从 TreePath 到整数的映射发生更改时(例如,扩展了某个节点),应调用此方法。

通常不必调用此方法;JTree 及其相关的侦听器将为您调用它。如果您正在实现自已的 view 类,则必须调用它。


getLeadSelectionRow

int getLeadSelectionRow()
返回前导选择索引。它是添加的最后一个索引。


getLeadSelectionPath

TreePath getLeadSelectionPath()
返回添加的最后一个路径。这可能与 JTree 维护的 leadSelectionPath 属性不同。


addPropertyChangeListener

void addPropertyChangeListener(PropertyChangeListener listener)
将一个 PropertyChangeListener 添加到侦听器列表中。该侦听器是为所有属性注册的。

当选择模式更改时,将触发 PropertyChangeEvent。

参数:
listener - 要添加的 PropertyChangeListener

removePropertyChangeListener

void removePropertyChangeListener(PropertyChangeListener listener)
从侦听器列表移除一个 PropertyChangeListener。此方法移除一个为所有属性注册的 PropertyChangeListener。

参数:
listener - 要移除的 PropertyChangeListener

addTreeSelectionListener

void addTreeSelectionListener(TreeSelectionListener x)
向侦听器列表添加 x,每次选定的 TreePath 集合发生更改时,这些侦听器都会得到通知。

参数:
x - 要添加的新侦听器

removeTreeSelectionListener

void removeTreeSelectionListener(TreeSelectionListener x)
从每次已选的 TreePath 集合发生更改时都会得到通知的侦听器列表中移除 x。

参数:
x - 要移除的侦听器