Module java.desktop
Package javax.swing

Interface ListSelectionModel

所有已知的实现类:
DefaultListSelectionModel

public interface ListSelectionModel
该接口表示显示具有稳定索引的值列表的任何组件的选择的当前状态。选择被建模为一组间隔,每个间隔表示一系列连续的选定列表元素。用于修改所选间隔集的方法都采用一对索引,index0和index1,表示闭合间隔,即该间隔包括index0和index1。
自:
1.2
参见:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final int
    选择模式属性的一个值: 一次选择一个或多个连续的索引范围。
    static final int
    选择模式属性的一个值: 一次选择一个连续的索引范围。
    static final int
    选择模式属性的一个值: 一次选择一个列表索引。
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    向列表添加一个侦听器,每当选择发生更改时通知。
    void
    addSelectionInterval(int index0, int index1)
    将选择更改为当前选择和index0和index1之间的索引(包括index0和index1)的集合并集。
    void
    将选择更改为空集。
    int
    返回最近一次调用setSelectionInterval()、addSelectionInterval()或removeSelectionInterval()的第一个索引参数。
    int
    返回最近一次调用setSelectionInterval()、addSelectionInterval()或removeSelectionInterval()的第二个索引参数。
    int
    返回最后一个选定的索引,如果选择为空则返回-1。
    int
    返回第一个选定的索引,如果选择为空则返回-1。
    default int[]
    返回选择模型中所有选定索引的数组,按升序排列。
    default int
    返回选定项的数量。
    int
    返回当前选择模式。
    boolean
    如果选择正在进行一系列更改,则返回true。
    void
    insertIndexInterval(int index, int length, boolean before)
    在index之前/之后插入length个索引。
    boolean
    isSelectedIndex(int index)
    如果指定的索引被选中,则返回true。
    boolean
    如果没有索引被选中,则返回true。
    void
    removeIndexInterval(int index0, int index1)
    从选择模型中删除间隔index0,index1(包括)中的索引。
    void
    从列表中删除每次选择更改时通知的侦听器。
    void
    removeSelectionInterval(int index0, int index1)
    将选择更改为当前选择和index0和index1之间的索引(包括index0和index1)的集合差集。
    void
    设置锚定选择索引。
    void
    setLeadSelectionIndex(int index)
    设置主导选择索引。
    void
    setSelectionInterval(int index0, int index1)
    将选择更改为index0和index1之间的索引(包括index0和index1)。
    void
    setSelectionMode(int selectionMode)
    设置选择模式。
    void
    setValueIsAdjusting(boolean valueIsAdjusting)
    设置valueIsAdjusting属性,指示即将发生的选择更改是否应视为单个更改的一部分。
  • Field Details

    • SINGLE_SELECTION

      static final int SINGLE_SELECTION
      选择模式属性的一个值: 一次选择一个列表索引。
      参见:
    • SINGLE_INTERVAL_SELECTION

      static final int SINGLE_INTERVAL_SELECTION
      选择模式属性的一个值: 一次选择一个连续的索引范围。
      参见:
    • MULTIPLE_INTERVAL_SELECTION

      static final int MULTIPLE_INTERVAL_SELECTION
      选择模式属性的一个值: 一次选择一个或多个连续的索引范围。
      参见:
  • Method Details

    • setSelectionInterval

      void setSelectionInterval(int index0, int index1)
      将选择更改为index0和index1之间的索引(包括index0和index1)。index0不必小于或等于index1。

      在SINGLE_SELECTION选择模式下,仅使用第二个索引。

      如果这代表对当前选择的更改,则通知每个ListSelectionListener更改。

      参数:
      index0 - 区间的一端。
      index1 - 区间的另一端
      参见:
    • addSelectionInterval

      void addSelectionInterval(int index0, int index1)
      将选择更改为当前选择和index0和index1之间的索引(包括index0和index1)的集合并集。index0不必小于或等于index1。

      在SINGLE_SELECTION选择模式下,这等效于调用setSelectionInterval,并且仅使用第二个索引。在SINGLE_INTERVAL_SELECTION选择模式下,此方法的行为类似于setSelectionInterval,除非给定的间隔与现有选择紧邻或重叠,因此可用于扩展选择。

      如果这代表对当前选择的更改,则通知每个ListSelectionListener更改。

      参数:
      index0 - 区间的一端。
      index1 - 区间的另一端
      参见:
    • removeSelectionInterval

      void removeSelectionInterval(int index0, int index1)
      将选择更改为当前选择和index0和index1之间的索引(包括index0和index1)的集合差集。index0不必小于或等于index1。

      在SINGLE_INTERVAL_SELECTION选择模式下,如果移除会产生两个不相交的选择,则移除将通过选择的较大端扩展。例如,如果选择是0-10,并且提供索引5,6(任意顺序),则结果选择是0-4。

      如果这代表对当前选择的更改,则通知每个ListSelectionListener更改。

      参数:
      index0 - 区间的一端。
      index1 - 区间的另一端
      参见:
    • getMinSelectionIndex

      int getMinSelectionIndex()
      返回第一个选定的索引,如果选择为空则返回-1。
      返回:
      第一个选定的索引,如果选择为空则返回-1。
    • getMaxSelectionIndex

      int getMaxSelectionIndex()
      返回最后一个选定的索引,如果选择为空则返回-1。
      返回:
      最后一个选定的索引,如果选择为空则返回-1。
    • isSelectedIndex

      boolean isSelectedIndex(int index)
      如果指定的索引被选中,则返回true。
      参数:
      index - 一个索引
      返回:
      如果指定的索引被选中,则返回true
    • getAnchorSelectionIndex

      int getAnchorSelectionIndex()
      返回最近一次调用setSelectionInterval()、addSelectionInterval()或removeSelectionInterval()的第一个索引参数。最近的index0被视为“锚点”,最近的index1被视为“主导”。一些界面会特殊显示这些索引,例如Windows95会用虚线黄色轮廓显示主导索引。
      返回:
      锚定选择索引
      参见:
    • setAnchorSelectionIndex

      void setAnchorSelectionIndex(int index)
      设置锚定选择索引。
      参数:
      index - 锚定选择索引
      参见:
    • getLeadSelectionIndex

      int getLeadSelectionIndex()
      返回最近一次调用setSelectionInterval()、addSelectionInterval()或removeSelectionInterval()的第二个索引参数。
      返回:
      主导选择索引。
      参见:
    • setLeadSelectionIndex

      void setLeadSelectionIndex(int index)
      设置主导选择索引。
      参数:
      index - 主导选择索引
      参见:
    • clearSelection

      void clearSelection()
      将选择更改为空集。如果这代表对当前选择的更改,则通知每个ListSelectionListener。
      参见:
    • isSelectionEmpty

      boolean isSelectionEmpty()
      如果没有索引被选中,则返回true。
      返回:
      如果没有索引被选中,则返回true。
    • insertIndexInterval

      void insertIndexInterval(int index, int length, boolean before)
      index之前/之后插入length个索引。通常用于将选择模型与数据模型的相应更改同步。
      参数:
      index - 区间的起始位置
      length - 区间的长度
      before - 如果为true,则在index之前插入区间,否则在index之后插入区间
    • removeIndexInterval

      void removeIndexInterval(int index0, int index1)
      从选择模型中删除区间index0,index1(包括这两个索引)。通常用于将选择模型与数据模型的相应更改同步。
      参数:
      index0 - 区间的起始位置
      index1 - 区间的结束位置
    • setValueIsAdjusting

      void setValueIsAdjusting(boolean valueIsAdjusting)
      设置valueIsAdjusting属性,指示即将发生的选择更改是否应视为单个更改的一部分。此属性的值用于初始化生成的ListSelectionEventvalueIsAdjusting属性。

      例如,如果选择正在响应用户拖动而更新,则可以在拖动开始时将此属性设置为true,并在拖动结束时将其设置为false。在拖动过程中,侦听器接收到具有valueIsAdjusting属性设置为true的事件。在拖动结束时,当更改完成时,侦听器接收到值设置为false的事件。如果希望仅在更改完成时更新,则侦听器可以使用此模式。

      将此属性设置为true将开始一系列被视为单个更改的更改。当属性再次更改为false时,将发送一个事件,描述整个选择更改(如果有的话),事件的valueIsAdjusting属性设置为false

      参数:
      valueIsAdjusting - 属性的新值
      另请参阅:
    • getValueIsAdjusting

      boolean getValueIsAdjusting()
      如果选择正在进行一系列更改,则返回true
      返回:
      如果选择正在进行一系列更改,则返回true
      另请参阅:
    • setSelectionMode

      void setSelectionMode(int selectionMode)
      设置选择模式。以下列表描述了可接受的选择模式:
      • ListSelectionModel.SINGLE_SELECTION - 一次只能选择一个列表索引。在此模式下,setSelectionIntervaladdSelectionInterval是等效的,都用第二个参数("lead")表示的索引替换当前选择。
      • ListSelectionModel.SINGLE_INTERVAL_SELECTION - 一次只能选择一个连续区间。在此模式下,addSelectionInterval的行为类似于setSelectionInterval(替换当前选择),除非给定的区间与现有选择紧邻或重叠,因此可以用于扩展选择。
      • ListSelectionModel.MULTIPLE_INTERVAL_SELECTION - 在此模式下,可以选择任何内容。
      参数:
      selectionMode - 选择模式
      抛出:
      IllegalArgumentException - 如果选择模式不是允许的模式之一
      另请参阅:
    • getSelectionMode

      int getSelectionMode()
      返回当前选择模式。
      返回:
      当前选择模式
      另请参阅:
    • addListSelectionListener

      void addListSelectionListener(ListSelectionListener x)
      向列表添加侦听器,每当选择发生更改时通知。
      参数:
      x - ListSelectionListener
      另请参阅:
    • removeListSelectionListener

      void removeListSelectionListener(ListSelectionListener x)
      从列表中移除侦听器,每当选择发生更改时通知。
      参数:
      x - ListSelectionListener
      另请参阅:
    • getSelectedIndices

      default int[] getSelectedIndices()
      返回选择模型中所有选定索引的数组,按升序排列。
      实现要求:
      默认实现从最小选定索引getMinSelectionIndex()到最大选定索引getMaxSelectionIndex()进行迭代,并返回新分配的int数组中选定的索引isSelectedIndex(int)
      返回:
      所有选定的索引,按升序排列,如果没有选定任何内容,则返回空数组
      自:
      11
      另请参阅:
    • getSelectedItemsCount

      default int getSelectedItemsCount()
      返回选定项的数量。
      实现要求:
      默认实现从最小选定索引getMinSelectionIndex()到最大选定索引getMaxSelectionIndex()进行迭代,并返回选定索引isSelectedIndex(int)的数量
      返回:
      选定项的数量,如果没有选定任何项,则为0
      自:
      11