java.lang.Object javax.swing.DefaultListSelectionModel
public class DefaultListSelectionModel
列表选择的默认数据模型。
警告:此类的序列化对象与以后的 Swing 版本不兼容。当前序列化支持适用于短期存储,或适用于在运行相同 Swing 版本的应用程序之间进行 RMI(Remote Method Invocation,远程方法调用)。从 1.4 版本开始,已在 java.beans
包中添加了支持所有 JavaBeansTM 长期存储的功能。请参见 XMLEncoder
。
ListSelectionModel
字段摘要 | |
---|---|
protected boolean |
leadAnchorNotificationEnabled |
protected EventListenerList |
listenerList |
从接口 javax.swing.ListSelectionModel 继承的字段 |
---|
MULTIPLE_INTERVAL_SELECTION, SINGLE_INTERVAL_SELECTION, SINGLE_SELECTION |
构造方法摘要 | |
---|---|
DefaultListSelectionModel() |
方法摘要 | ||
---|---|---|
void |
addListSelectionListener(ListSelectionListener l) 将侦听器添加到每次在选择发生更改时都得到通知的列表。 |
|
void |
addSelectionInterval(int index0, int index1) 将选择更改为当前选择与 index0 和 index1 (包括)之间索引的并集。 |
|
void |
clearSelection() 将该选择更改为空集。 |
|
Object |
clone() 返回此选择模型的具有相同选择的副本。 |
|
protected void |
fireValueChanged(boolean isAdjusting) 通知侦听器已经结束了一系列的调整。 |
|
protected void |
fireValueChanged(int firstIndex, int lastIndex) 通知 ListSelectionListener 选择的值已发生更改,该值在 firstIndex 和 lastIndex 组成的闭区间内。 |
|
protected void |
fireValueChanged(int firstIndex, int lastIndex, boolean isAdjusting) |
|
int |
getAnchorSelectionIndex() 从对 setSelectionInterval()、addSelectionInterval() 或 removeSelectionInterval() 的最近调用中返回第一个索引参数。 |
|
int |
getLeadSelectionIndex() 从对 setSelectionInterval()、addSelectionInterval() 或 removeSelectionInterval() 的最近调用中返回第二个索引参数。 |
|
|
getListeners(Class<T> listenerType) 返回当前已在此模型上注册为 FooListener 的所有对象组成的数组。 |
|
ListSelectionListener[] |
getListSelectionListeners() 返回已在此 DefaultListSelectionModel 上注册的所有列表选择侦听器组成的数组。 |
|
int |
getMaxSelectionIndex() 返回最后选择的索引,如果选择为空,则返回 -1。 |
|
int |
getMinSelectionIndex() 返回第一个选择的索引,如果选择为空,则返回 -1。 |
|
int |
getSelectionMode() 返回当前选择模式。 |
|
boolean |
getValueIsAdjusting() 如果选择在进行一系列更改,则返回 true 。 |
|
void |
insertIndexInterval(int index, int length, boolean before) 从 index 之前/之后开始插入 length 个索引。 |
|
boolean |
isLeadAnchorNotificationEnabled() 返回 leadAnchorNotificationEnabled 标志的值。 |
|
boolean |
isSelectedIndex(int index) 如果选择了指定的索引,则返回 true。 |
|
boolean |
isSelectionEmpty() 如果没有选择索引,则返回 true。 |
|
void |
moveLeadSelectionIndex(int leadIndex) 设置 lead 选择索引,并不作更改地保留所有选择值。 |
|
void |
removeIndexInterval(int index0, int index1) 从选择模型中移除 index0,index1 区间中(包括两端点)的索引。 |
|
void |
removeListSelectionListener(ListSelectionListener l) 将侦听器从每次在选择发生更改时都得到通知的列表中移除。 |
|
void |
removeSelectionInterval(int index0, int index1) 将选择更改为当前选择与 index0 和 index1 (包括)之间索引的差集。 |
|
void |
setAnchorSelectionIndex(int anchorIndex) 设置 anchor 选择索引,并不作更改地保留所有选择值。 |
|
void |
setLeadAnchorNotificationEnabled(boolean flag) 设置 leadAnchorNotificationEnabled 标志的值。 |
|
void |
setLeadSelectionIndex(int leadIndex) 设置 lead 选择索引,确保 anchor 和新 lead 之间的值要么全部被选定,要么全部被取消选定。 |
|
void |
setSelectionInterval(int index0, int index1) 将选择更改为 index0 和 index1 (包括)的范围之间。 |
|
void |
setSelectionMode(int selectionMode) 设置选择模式。 |
|
void |
setValueIsAdjusting(boolean isAdjusting) 设置 valueIsAdjusting 属性,指示即将进行的选择更改是否应该被视为单个更改的一部分。 |
|
String |
toString() 返回显示并标识此对象的属性的字符串。 |
从类 java.lang.Object 继承的方法 |
---|
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
字段详细信息 |
---|
protected EventListenerList listenerList
protected boolean leadAnchorNotificationEnabled
构造方法详细信息 |
---|
public DefaultListSelectionModel()
方法详细信息 |
---|
public int getMinSelectionIndex()
ListSelectionModel
中的
getMinSelectionIndex
public int getMaxSelectionIndex()
ListSelectionModel
中的
getMaxSelectionIndex
public boolean getValueIsAdjusting()
true
。
ListSelectionModel
中的
getValueIsAdjusting
ListSelectionModel.setValueIsAdjusting(boolean)
public int getSelectionMode()
ListSelectionModel
中的
getSelectionMode
ListSelectionModel.setSelectionMode(int)
public void setSelectionMode(int selectionMode)
ListSelectionModel.SINGLE_SELECTION
- 一次只能选择一个列表索引。在此模式中,setSelectionInterval
和 addSelectionInterval
是等效的,两者都使用第二个参数(“lead”)所表示的索引来替换当前选择。 ListSelectionModel.SINGLE_INTERVAL_SELECTION
- 一次只能选择一个连续索引区间。在此模式中,addSelectionInterval
行为类似于 setSelectionInterval
(替换当前选择),除非给定区间紧接现有选择或与现有选择重叠从而可用于增大该选择。 ListSelectionModel.MULTIPLE_INTERVAL_SELECTION
- 在此模式中,对选择内容无任何限制。
ListSelectionModel
中的
setSelectionMode
IllegalArgumentException
- 如果选择模式不是允许的模式之一
ListSelectionModel.getSelectionMode()
public boolean isSelectedIndex(int index)
ListSelectionModel
中的
isSelectedIndex
public boolean isSelectionEmpty()
ListSelectionModel
中的
isSelectionEmpty
public void addListSelectionListener(ListSelectionListener l)
ListSelectionModel
中的
addListSelectionListener
l
- ListSelectionListener
ListSelectionModel.removeListSelectionListener(javax.swing.event.ListSelectionListener)
,
ListSelectionModel.setSelectionInterval(int, int)
,
ListSelectionModel.addSelectionInterval(int, int)
,
ListSelectionModel.removeSelectionInterval(int, int)
,
ListSelectionModel.clearSelection()
,
ListSelectionModel.insertIndexInterval(int, int, boolean)
,
ListSelectionModel.removeIndexInterval(int, int)
public void removeListSelectionListener(ListSelectionListener l)
ListSelectionModel
中的
removeListSelectionListener
l
- ListSelectionListener
ListSelectionModel.addListSelectionListener(javax.swing.event.ListSelectionListener)
public ListSelectionListener[] getListSelectionListeners()
DefaultListSelectionModel
上注册的所有列表选择侦听器组成的数组。
ListSelectionListener
,如果当前没有已注册的列表选择侦听器,则返回一个空数组。
addListSelectionListener(javax.swing.event.ListSelectionListener)
,
removeListSelectionListener(javax.swing.event.ListSelectionListener)
protected void fireValueChanged(boolean isAdjusting)
protected void fireValueChanged(int firstIndex, int lastIndex)
ListSelectionListener
选择的值已发生更改,该值在
firstIndex
和
lastIndex
组成的闭区间内。
protected void fireValueChanged(int firstIndex, int lastIndex, boolean isAdjusting)
firstIndex
- 区间中的第一个索引
lastIndex
- 区间中的最后一个索引
isAdjusting
- 如果这是一系列调整中的最终更改,则该参数为 true
EventListenerList
public <T extends EventListener> T[] getListeners(Class<T> listenerType)
FooListener
的所有对象组成的数组。
FooListener
是用
addFooListener
方法注册的。
可以使用 class 字面值来指定 listenerType
参数,如 FooListener.class
。例如,可以使用下面的代码查询 DefaultListSelectionModel
实例 m
的列表选择侦听器:
ListSelectionListener[] lsls = (ListSelectionListener[])(m.getListeners(ListSelectionListener.class));如果不存在这样的侦听器,则此方法将返回一个空数组。
listenerType
- 请求的侦听器类型;该参数应该指定一个从
java.util.EventListener
继承的接口
FooListener
的所有对象组成的数组,如果没有添加这样的侦听器,则返回一个空数组
ClassCastException
- 如果
listenerType
没有指定实现
java.util.EventListener
的类或接口
getListSelectionListeners()
public void setLeadAnchorNotificationEnabled(boolean flag)
public boolean isLeadAnchorNotificationEnabled()
leadAnchorNotificationEnabled
标志的值。当
leadAnchorNotificationEnabled
为 true 时,该模型生成具有限定范围的通知事件,该范围覆盖对选择所做的所有更改以及对 lead 和 anchor 索引所做的更改。将标志设置为 false 会导致事件的限定范围缩小,使其只包括那些已选择的或自上一次更改之后取消选择的元素。总之,该模型将继续内部维护 lead 和 anchor 变量。默认值为 true。
注:在不更改选择的情况下更改 lead 或 anchor 是有可能的。通知这些更改常常很重要,比如需要在视图中更新新的 lead 或 anchor 时。因此,在更改默认值时,一定要小心谨慎。
leadAnchorNotificationEnabled
标志的值
setLeadAnchorNotificationEnabled(boolean)
public void clearSelection()
ListSelectionModel
中的
clearSelection
public void setSelectionInterval(int index0, int index1)
index0
和
index1
(包括)的范围之间。
index0
不必小于等于
index1
。
在 SINGLE_SELECTION
选择模式中,只使用第二个索引。
如果这表示对当前选择的更改,那么将向每个 ListSelectionListener
通知更改。
如果任一索引为 -1
,则此方法不执行任何操作,并不带任何异常地返回。如果任一索引小于 -1
,则抛出 IndexOutOfBoundsException
。
ListSelectionModel
中的
setSelectionInterval
index0
- 区间的一端
index1
- 区间的另一端
IndexOutOfBoundsException
- 如果任一索引小于
-1
(并且两个索引都不为
-1
)
addListSelectionListener(javax.swing.event.ListSelectionListener)
public void addSelectionInterval(int index0, int index1)
index0
和
index1
(包括)之间索引的并集。
在 SINGLE_SELECTION
选择模式中,此方法等效于调用 setSelectionInterval
,并且只使用第二个索引。在 SINGLE_INTERVAL_SELECTION
选择模式中,此方法与 setSelectionInterval
的作用完全相同,除非给定区间紧接现有选择或与现有选择重叠从而可用于增大它。
如果这表示对当前选择的更改,那么将向每个 ListSelectionListener
通知更改。注意,index0
不必小于等于 index1
。
如果任一索引为 -1
,则此方法不执行任何操作,并不带任何异常地返回。如果任一索引小于 -1
,则抛出 IndexOutOfBoundsException
。
ListSelectionModel
中的
addSelectionInterval
index0
- 区间的一端
index1
- 区间的另一端
IndexOutOfBoundsException
- 如果任一索引小于
-1
(并且两个索引都不为
-1
)
addListSelectionListener(javax.swing.event.ListSelectionListener)
,
setSelectionInterval(int, int)
public void removeSelectionInterval(int index0, int index1)
index0
和
index1
(包括)之间索引的差集。
index0
不必小于等于
index1
。
在 SINGLE_INTERVAL_SELECTION
选择模式中,如果移除操作将生成两个不相交的选择,则移除操作将通过该选择较大的一端延伸。例如,如果选择为 0-10
,提供索引 5,6
(按任意顺序),则所得选择为 0-4
。
如果这表示对当前选择的更改,那么将向每个 ListSelectionListener
通知更改。
如果任一索引为 -1
,则此方法不执行任何操作,并不带任何异常地返回。如果任一索引小于 -1
,则抛出 IndexOutOfBoundsException
。
ListSelectionModel
中的
removeSelectionInterval
index0
- 区间的一端
index1
- 区间的另一端
IndexOutOfBoundsException
- 如果任一索引小于
-1
(并且两个索引都不为
-1
)
addListSelectionListener(javax.swing.event.ListSelectionListener)
public void insertIndexInterval(int index, int length, boolean before)
ListSelectionModel
中的
insertIndexInterval
public void removeIndexInterval(int index0, int index1)
ListSelectionModel
中的
removeIndexInterval
public void setValueIsAdjusting(boolean isAdjusting)
valueIsAdjusting
属性,指示即将进行的选择更改是否应该被视为单个更改的一部分。此属性的值用于初始化生成
ListSelectionEvent
的
valueIsAdjusting
属性。
例如,如果选择被更新以响应一个用户的拖动,那么在拖动开始时,此属性被设置为 true
;在拖动结束时被设置为 false
。在拖动期间,侦听器接收 valueIsAdjusting
属性设置为 true
的事件。在拖动的最后,当更改终止时,侦听器接收一个值设置为 false
的事件。如果只在更改已终止时希望更新,则侦听器可以使用此模式。
将此属性设置为 true
将开始一系列将被视为单个更改一部分的更改。当该属性更改回 false
时,发送一个表现整个选择更改特征的事件(如果有),该事件的 valueIsAdjusting
属性设置为 false
。
ListSelectionModel
中的
setValueIsAdjusting
isAdjusting
- 属性的新值
ListSelectionModel.getValueIsAdjusting()
,
ListSelectionEvent.getValueIsAdjusting()
public String toString()
public Object clone() throws CloneNotSupportedException
listenerList
没有被复制。
CloneNotSupportedException
- 如果选择模型没有 (a) 实现 Cloneable 接口且 (b) 定义一个
clone
方法。
Cloneable
public int getAnchorSelectionIndex()
ListSelectionModel
中的
getAnchorSelectionIndex
public int getLeadSelectionIndex()
ListSelectionModel
中的
getLeadSelectionIndex
public void setAnchorSelectionIndex(int anchorIndex)
ListSelectionModel
中的
setAnchorSelectionIndex
public void moveLeadSelectionIndex(int leadIndex)
leadIndex
- 新的 lead 选择索引
setAnchorSelectionIndex(int)
,
setLeadSelectionIndex(int)
,
getLeadSelectionIndex()
public void setLeadSelectionIndex(int leadIndex)
如果 anchor 索引处的值未被选定,则反过来执行上述操作:选择原有范围中的值,并取消选择新范围中的值。
为此更改生成一个事件,并通知所有侦听器。为了在此事件中生成最小的限定范围,要一次完成该操作;那样广播的 ListSelectionEvent 中第一个和最后一个索引将指出由于此方法而实际更改了其值的单元格。如果分两步完成此操作,则选择状态上的效果将是相同的,但会生成两个事件,更改值的限定范围变得更宽,包括之前已清除但稍后又被设置的单元格。
可以在 UI 类的 mouseDragged
方法中使用此方法来扩展选择。
ListSelectionModel
中的
setLeadSelectionIndex