java.lang.Object javax.swing.tree.DefaultTreeSelectionModel
public class DefaultTreeSelectionModel
TreeSelectionModel 的默认实现。每当 selection 中的路径(不是行)发生更改时,侦听器就会获得通知。为了能够跟踪行的更改,您可能希望获得一个侦听器,用于树上的扩展事件,并从该位置测试更改。
从所有更新选择路径的方法中调用 resetRowSelection。如果对这些方法中的任何方法创建子类来过滤允许选择的内容,并且没有通知超类,请确定并通知 resetRowSelection
。
警告:此类的序列化对象将与以后的 Swing 版本不兼容。当前的序列化支持适用于短期存储或运行相同 Swing 版本的应用程序之间的 RMI。从 1.4 版本开始,已在 java.beans
包中添加了支持所有 JavaBeansTM 长期存储的功能。请参见 XMLEncoder
。
JTree
字段摘要 | |
---|---|
protected SwingPropertyChangeSupport |
changeSupport 用于接收通知的注册侦听器。 |
protected int |
leadIndex selection 中前导路径的索引。 |
protected TreePath |
leadPath 添加的最后一条路径。 |
protected int |
leadRow 前导行。 |
protected EventListenerList |
listenerList 事件侦听器列表。 |
protected DefaultListSelectionModel |
listSelectionModel 维护列表选择模型的句柄。 |
protected RowMapper |
rowMapper 提供给定路径的行。 |
protected TreePath[] |
selection 当前选择的路径。 |
static String |
SELECTION_MODE_PROPERTY selectionMode 的属性名称。 |
protected int |
selectionMode 用于 selection 的模式,将是 SINGLE_TREE_SELECTION、CONTIGUOUS_TREE_SELECTION 或 DISCONTIGUOUS_TREE_SELECTION。 |
从接口 javax.swing.tree.TreeSelectionModel 继承的字段 |
---|
CONTIGUOUS_TREE_SELECTION, DISCONTIGUOUS_TREE_SELECTION, SINGLE_TREE_SELECTION |
构造方法摘要 | |
---|---|
DefaultTreeSelectionModel() 使用 DISCONTIGUOUS_TREE_SELECTION 的选择模式创建空的 DefaultTreeSelectionModel 新实例。 |
方法摘要 | ||
---|---|---|
void |
addPropertyChangeListener(PropertyChangeListener listener) 将 PropertyChangeListener 添加到侦听器列表。 |
|
void |
addSelectionPath(TreePath path) 将路径添加到当前的 selection 中。 |
|
void |
addSelectionPaths(TreePath[] paths) 向当前的 selection 中添加路径。 |
|
void |
addTreeSelectionListener(TreeSelectionListener x) 向每次已选的 TreePaths 集合发生更改时都会得到通知的侦听器列表添加 x。 |
|
protected boolean |
arePathsContiguous(TreePath[] paths) 如果路径是连续的,或者此对象没有 RowMapper,则返回 true。 |
|
protected boolean |
canPathsBeAdded(TreePath[] paths) 用于测试是否可以添加特定的 TreePath 集合。 |
|
protected boolean |
canPathsBeRemoved(TreePath[] paths) 如果可以移除该路径而不中断该模型的连续性,则返回 true。 |
|
void |
clearSelection() 清空当前的 selection。 |
|
Object |
clone() 返回具有相同 selection 的此对象的副本。 |
|
protected void |
fireValueChanged(TreeSelectionEvent e) 通知已注册此对象上的树选择事件的所有侦听器。 |
|
TreePath |
getLeadSelectionPath() 返回添加的最后一条路径。 |
|
int |
getLeadSelectionRow() 返回 lead selection 索引。 |
|
|
getListeners(Class<T> listenerType) 返回当前已在此模型上注册为 FooListener 的所有对象组成的数组。 |
|
int |
getMaxSelectionRow() 返回从 RowMapper 获取的已选择的 TreePath 的当前集合中的最大值。 |
|
int |
getMinSelectionRow() 返回从 RowMapper 获取的已选择的 TreePath 的当前集合中的最小值。 |
|
PropertyChangeListener[] |
getPropertyChangeListeners() 返回此 DefaultTreeSelectionModel 上注册的所有属性更改侦听器组成的数组。 |
|
RowMapper |
getRowMapper() 返回能够将 TreePath 映射到行的 RowMapper 实例。 |
|
int |
getSelectionCount() 返回选择的路径数。 |
|
int |
getSelectionMode() 返回选择模式,它是 SINGLE_TREE_SELECTION 、DISCONTIGUOUS_TREE_SELECTION 或 CONTIGUOUS_TREE_SELECTION 之一。 |
|
TreePath |
getSelectionPath() 返回 selection 中的第一个路径。 |
|
TreePath[] |
getSelectionPaths() 返回 selection 中的路径。 |
|
int[] |
getSelectionRows() 返回当前已选的所有行。 |
|
TreeSelectionListener[] |
getTreeSelectionListeners() 返回已在此模型上注册的所有树选择侦听器组成的数组。 |
|
protected void |
insureRowContinuity() 确保当前选择的 TreePath 对于当前选择模式是有效的。 |
|
protected void |
insureUniqueness() 此方法已过时,并且其实现现在是一个 noop。 |
|
boolean |
isPathSelected(TreePath path) 如果当前选择了路径 path ,则返回 true。 |
|
boolean |
isRowSelected(int row) 如果选择了由 row 标识的行,则返回 true。 |
|
boolean |
isSelectionEmpty() 如果 selection 当前为空,则返回 true。 |
|
protected void |
notifyPathChange(Vector<javax.swing.tree.PathPlaceHolder> changedPaths, TreePath oldLeadSelection) 通知侦听器路径中的更改。 |
|
void |
removePropertyChangeListener(PropertyChangeListener listener) 从侦听器列表移除 PropertyChangeListener。 |
|
void |
removeSelectionPath(TreePath path) 从 selection 中移除路径。 |
|
void |
removeSelectionPaths(TreePath[] paths) 从 selection 中移除路径。 |
|
void |
removeTreeSelectionListener(TreeSelectionListener x) 从每次已选的 TreePaths 集合发生更改时都会得到通知的侦听器列表中移除 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[] pPaths) 为该选择设置路径中的路径。 |
|
String |
toString() 返回显示并标识此对象属性的字符串。 |
|
protected void |
updateLeadIndex() 更新 leadIndex 实例变量。 |
从类 java.lang.Object 继承的方法 |
---|
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
字段详细信息 |
---|
public static final String SELECTION_MODE_PROPERTY
protected SwingPropertyChangeSupport changeSupport
protected TreePath[] selection
protected EventListenerList listenerList
protected transient RowMapper rowMapper
protected DefaultListSelectionModel listSelectionModel
protected int selectionMode
protected TreePath leadPath
protected int leadIndex
protected int leadRow
构造方法详细信息 |
---|
public DefaultTreeSelectionModel()
方法详细信息 |
---|
public void setRowMapper(RowMapper newMapper)
TreeSelectionModel
中的
setRowMapper
public RowMapper getRowMapper()
TreeSelectionModel
中的
getRowMapper
public void setSelectionMode(int mode)
DISCONTIGUOUS_TREE_SELECTION
。
如果当前的 selection 对新模式无效,这可以更改该 selection。例如,如果将模式更改为 SINGLE_TREE_SELECTION
时选中三个 TreePath,则只有一个 TreePath 仍然被选中。由特定的实现来决定保留选定哪一个 TreePath。
将该模式设置为定义的类型以外的其他类型,将导致该模式变成 DISCONTIGUOUS_TREE_SELECTION
。
TreeSelectionModel
中的
setSelectionMode
public int getSelectionMode()
SINGLE_TREE_SELECTION
、
DISCONTIGUOUS_TREE_SELECTION
或
CONTIGUOUS_TREE_SELECTION
之一。
TreeSelectionModel
中的
getSelectionMode
public void setSelectionPath(TreePath path)
path
为 null,则这与调用
clearSelection
具有相同的效果。
TreeSelectionModel
中的
setSelectionPath
path
- 要选择的新路径
public void setSelectionPaths(TreePath[] pPaths)
如果 paths
为 null,则这与调用 clearSelection
具有相同的效果。
将前导路径设置为 pPaths
中的最后一个路径。
如果选择模式为 CONTIGUOUS_TREE_SELECTION
,并且添加新路径会使该选择不连续,则将该选择重新设置为 paths
中的第一个 TreePath。
TreeSelectionModel
中的
setSelectionPaths
pPaths
- 新的选择
public void addSelectionPath(TreePath path)
path
为 null,则通知无效。
TreeSelectionModel
中的
addSelectionPath
path
- 添加到当前 selection 中的新路径
public void addSelectionPaths(TreePath[] paths)
paths
为 null,则此方法无效。
将前导路径设置为 paths
中的最后元素。
如果选择模式为 CONTIGUOUS_TREE_SELECTION
,则添加新的路径会使选择不连续。那么可导致两种结果:如果 paths
中的 TreePaths 是连续的,则该选择会变为这些 TreePaths,相反,如果 TreePaths 不是连续的,则该选择会变为 paths
中的第一个 TreePath。
TreeSelectionModel
中的
addSelectionPaths
paths
- 添加到当前 selection 的新路径
public void removeSelectionPath(TreePath path)
path
为 null,则此方法无效。
TreeSelectionModel
中的
removeSelectionPath
path
- 要从选择中移除的路径
public void removeSelectionPaths(TreePath[] paths)
paths
为 null,则此方法无效。
TreeSelectionModel
中的
removeSelectionPaths
paths
- 从 selection 中移除的路径
public TreePath getSelectionPath()
TreeSelectionModel
中的
getSelectionPath
public TreePath[] getSelectionPaths()
TreeSelectionModel
中的
getSelectionPaths
public int getSelectionCount()
TreeSelectionModel
中的
getSelectionCount
public boolean isPathSelected(TreePath path)
path
,则返回 true。
TreeSelectionModel
中的
isPathSelected
public boolean isSelectionEmpty()
TreeSelectionModel
中的
isSelectionEmpty
public void clearSelection()
TreeSelectionModel
中的
clearSelection
public void addTreeSelectionListener(TreeSelectionListener x)
TreeSelectionModel
中的
addTreeSelectionListener
x
- 要添加的新侦听器
public void removeTreeSelectionListener(TreeSelectionListener x)
TreeSelectionModel
中的
removeTreeSelectionListener
x
- 要移除的侦听器
public TreeSelectionListener[] getTreeSelectionListeners()
TreeSelectionListener
,如果当前没有已注册的树选择侦听器,则返回一个空数组。
addTreeSelectionListener(javax.swing.event.TreeSelectionListener)
,
removeTreeSelectionListener(javax.swing.event.TreeSelectionListener)
protected void fireValueChanged(TreeSelectionEvent e)
public <T extends EventListener> T[] getListeners(Class<T> listenerType)
FooListener
的所有对象组成的数组。
FooListener
是用
addFooListener
方法注册的。
可以使用 class 字面值来指定 listenerType
参数,如 FooListener.class
。例如,可以通过下面的代码查询 DefaultTreeSelectionModel
m
的树选择侦听器:
TreeSelectionListener[] tsls = (TreeSelectionListener[])(m.getListeners(TreeSelectionListener.class));如果不存在这样的侦听器,则此方法将返回一个空数组。
listenerType
- 所请求侦听器的类型;该参数应该指定一个从
java.util.EventListener
继承的接口
FooListener
的所有对象的数组,如果没有添加这样的侦听器,则返回一个空数组
ClassCastException
- 如果
listenerType
没有指定实现
java.util.EventListener
的类或接口
getTreeSelectionListeners()
,
getPropertyChangeListeners()
public int[] getSelectionRows()
TreeSelectionModel
中的
getSelectionRows
public int getMinSelectionRow()
TreeSelectionModel
中的
getMinSelectionRow
public int getMaxSelectionRow()
TreeSelectionModel
中的
getMaxSelectionRow
public boolean isRowSelected(int row)
row
标识的行,则返回 true。
TreeSelectionModel
中的
isRowSelected
public void resetRowSelection()
通常不必调用此方法,JTree 及其相关的侦听器将为您调用它。如果您正在实现自已的 View 类,则必须调用该方法。
这将调用 insureRowContinuity
,以确保当前选择的 TreePath 基于选择模式仍然有效。
TreeSelectionModel
中的
resetRowSelection
public int getLeadSelectionRow()
TreeSelectionModel
中的
getLeadSelectionRow
public TreePath getLeadSelectionPath()
TreeSelectionModel
中的
getLeadSelectionPath