モジュール java.desktop
パッケージ javax.swing

クラスDefaultListSelectionModel

java.lang.Object
javax.swing.DefaultListSelectionModel
すべての実装されたインタフェース:
Serializable, Cloneable, ListSelectionModel

public class DefaultListSelectionModel extends Object implements ListSelectionModel, Cloneable, Serializable
リスト選択のデフォルト・データ・モデルです。

警告: このクラスの直列化されたオブジェクトは、今後のSwingリリースと互換ではなくなる予定です。 現在の直列化のサポートは、短期間の格納や、同じバージョンのSwingを実行するアプリケーション間のRMIに適しています。 1.4では、すべてのJavaBeansの長期ストレージのサポートがjava.beansパッケージに追加されました。 XMLEncoderを参照してください。

導入されたバージョン:
1.2
関連項目:
  • フィールドのサマリー

    フィールド
    修飾子と型
    フィールド
    説明
    protected boolean
    リード・アンカー通知が有効かどうか。
    リスナーのリスト。

    インタフェース javax.swing.ListSelectionModelで宣言されたフィールド

    MULTIPLE_INTERVAL_SELECTION, SINGLE_INTERVAL_SELECTION, SINGLE_SELECTION
  • コンストラクタのサマリー

    コンストラクタ
    コンストラクタ
    説明
    DefaultListSelectionModelを構築します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    void
    選択範囲の変更が通知されるリスナーをリストに追加します。
    void
    addSelectionInterval(int index0, int index1)
    選択範囲を、現在の選択範囲とindex0以上index1以下のインデックスの示す範囲との和集合に変更します。
    void
    選択範囲を空のセットに変更します。
    この選択モデルの複製を、同じ選択状態で返します。
    protected void
    fireValueChanged(boolean isAdjusting)
    一連の調整が終了したことをリスナーに通知します。
    protected void
    fireValueChanged(int firstIndex, int lastIndex)
    firstIndexlastIndex間で選択の値が変更されたことをListSelectionListenersに通知します。
    protected void
    fireValueChanged(int firstIndex, int lastIndex, boolean isAdjusting)
     
    int
    setSelectionInterval()、addSelectionInterval()、またはremoveSelectionInterval()の直前の呼び出しから、最初のインデックス引数を返します。
    int
    setSelectionInterval()、addSelectionInterval()、またはremoveSelectionInterval()の直前の呼び出しから、2番目のインデックス引数を返します。
    <T extends EventListener>
    T[]
    getListeners(Class<T> listenerType)
    このモデルにFooListenerとして現在登録されているすべてのオブジェクトの配列を返します。
    このDefaultListSelectionModelに登録されたすべてのリスト選択リスナーの配列を返します。
    int
    最後に選択されたインデックスを返すか、選択範囲が空の場合に -1を返します。
    int
    最初に選択されたインデックスを返すか、選択範囲が空の場合に -1を返します。
    int
    現在の選択モードを返します。
    boolean
    選択に一連の変更を適用中である場合はtrueを返します。
    void
    insertIndexInterval(int index, int length, boolean before)
    indexの前/後から始まるlengthインデックスを挿入します。
    boolean
    leadAnchorNotificationEnabledフラグの値を返します。
    boolean
    isSelectedIndex(int index)
    指定のインデックスが選択されている場合にtrueを返します。
    boolean
    インデックスが選択されていない場合にtrueを返します。
    void
    moveLeadSelectionIndex(int leadIndex)
    先頭の選択インデックスを設定して、すべての選択値を未変更のままにします。
    void
    removeIndexInterval(int index0, int index1)
    選択モデルから、index0とindex1を両端として含む区間のインデックスを削除します。
    void
    選択範囲の変更が通知されるリスナーをリストから削除します。
    void
    removeSelectionInterval(int index0, int index1)
    選択範囲を、現在の選択範囲とindex0以上index1以下のインデックスの示す範囲との差集合に変更します。
    void
    setAnchorSelectionIndex(int anchorIndex)
    アンカー選択インデックスを設定して、すべての選択値を変更しないままにします。
    void
    leadAnchorNotificationEnabledフラグの値を設定します。
    void
    setLeadSelectionIndex(int leadIndex)
    先頭の選択インデックスを設定し、アンカーと新しい先頭の間の値が、すべて選択またはすべて選択解除のどちらかであることを保証します。
    void
    setSelectionInterval(int index0, int index1)
    選択範囲をindex0以上index1以下に変更します。
    void
    setSelectionMode(int selectionMode)
    選択モードを設定します。
    void
    setValueIsAdjusting(boolean isAdjusting)
    選択に対する複数の変更を1つの変更の一部であると見なすかどうかを指定する、valueIsAdjustingプロパティを設定します。
    このオブジェクトのプロパティを表示および識別する文字列を返します。

    クラス java.lang.Objectで宣言されたメソッド

    equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

    インタフェース javax.swing.ListSelectionModelで宣言されたメソッド

    getSelectedIndices, getSelectedItemsCount
  • フィールド詳細

    • listenerList

      protected EventListenerList listenerList
      リスナーのリスト。
    • leadAnchorNotificationEnabled

      protected boolean leadAnchorNotificationEnabled
      リード・アンカー通知が有効かどうか。
  • コンストラクタの詳細

    • DefaultListSelectionModel

      public DefaultListSelectionModel()
      DefaultListSelectionModelを構築します。
  • メソッドの詳細

    • getMinSelectionIndex

      public int getMinSelectionIndex()
      最初に選択されたインデックスを返すか、選択範囲が空の場合に -1を返します。
      定義:
      getMinSelectionIndex、インタフェースListSelectionModel
      戻り値:
      最初に選択されたインデックス、または選択範囲が空の場合は -1。
    • getMaxSelectionIndex

      public int getMaxSelectionIndex()
      最後に選択されたインデックスを返すか、選択範囲が空の場合に -1を返します。
      定義:
      getMaxSelectionIndex、インタフェースListSelectionModel
      戻り値:
      最後に選択されたインデックス、または選択範囲が空の場合は -1。
    • getValueIsAdjusting

      public boolean getValueIsAdjusting()
      選択に一連の変更を適用中である場合はtrueを返します。
      定義:
      getValueIsAdjusting、インタフェースListSelectionModel
      戻り値:
      選択に一連の変更を適用中である場合はtrue
      関連項目:
    • getSelectionMode

      public int getSelectionMode()
      現在の選択モードを返します。
      定義:
      getSelectionMode、インタフェースListSelectionModel
      戻り値:
      現在の選択モード
      関連項目:
    • setSelectionMode

      public void setSelectionMode(int selectionMode)
      選択モードを設定します。 使用可能な選択モードは、次のリストのとおりです。
      • ListSelectionModel.SINGLE_SELECTION - 1回に1つのリスト・インデックスのみを選択できます。 このモードでは、setSelectionIntervalメソッドとaddSelectionIntervalメソッドは同等であり、どちらも現在の選択を、2番目の引数で表されるインデックス(「リード・インデックス」)で置き換えます。
      • ListSelectionModel.SINGLE_INTERVAL_SELECTION - 1回に1つの連続区間のみを選択できます。 このモードでは、addSelectionIntervalは、指定された間隔が既存の選択範囲に隣接していたりオーバーラップしていたりしないかぎりsetSelectionIntervalと同様に動作する(現在の選択を置き換える)ため、選択範囲を拡張するために使用できます。
      • ListSelectionModel.MULTIPLE_INTERVAL_SELECTION - このモードでは、選択対象に制限はありません。
      定義:
      setSelectionMode、インタフェースListSelectionModel
      パラメータ:
      selectionMode - 選択モード
      例外:
      IllegalArgumentException - 許可された選択モードでない場合
      関連項目:
    • isSelectedIndex

      public boolean isSelectedIndex(int index)
      指定のインデックスが選択されている場合にtrueを返します。
      定義:
      isSelectedIndex、インタフェースListSelectionModel
      パラメータ:
      index - インデックス
      戻り値:
      true指定されたインデックスが選択されている場合
    • isSelectionEmpty

      public boolean isSelectionEmpty()
      インデックスが選択されていない場合にtrueを返します。
      定義:
      isSelectionEmpty、インタフェースListSelectionModel
      戻り値:
      インデックスが選択されていない場合はtrue
    • addListSelectionListener

      public void addListSelectionListener(ListSelectionListener l)
      選択範囲の変更が通知されるリスナーをリストに追加します。
      定義:
      addListSelectionListener、インタフェースListSelectionModel
      パラメータ:
      l - ListSelectionListener
      関連項目:
    • removeListSelectionListener

      public void removeListSelectionListener(ListSelectionListener l)
      選択範囲の変更が通知されるリスナーをリストから削除します。
      定義:
      removeListSelectionListener、インタフェースListSelectionModel
      パラメータ:
      l - ListSelectionListener
      関連項目:
    • getListSelectionListeners

      public ListSelectionListener[] getListSelectionListeners()
      このDefaultListSelectionModelに登録されたすべてのリスト選択リスナーの配列を返します。
      戻り値:
      このモデルのすべてのListSelectionListener。リスト選択リスナーが現在登録されていない場合は空の配列
      導入されたバージョン:
      1.4
      関連項目:
    • fireValueChanged

      protected void fireValueChanged(boolean isAdjusting)
      一連の調整が終了したことをリスナーに通知します。
      パラメータ:
      isAdjusting - 一連の調整の最後の変更である場合はtrue
    • fireValueChanged

      protected void fireValueChanged(int firstIndex, int lastIndex)
      firstIndexlastIndex間で選択の値が変更されたことをListSelectionListenersに通知します。
      パラメータ:
      firstIndex - 範囲の先頭のインデックス
      lastIndex - 範囲の最後のインデックス
    • fireValueChanged

      protected void fireValueChanged(int firstIndex, int lastIndex, boolean isAdjusting)
      パラメータ:
      firstIndex - 範囲の先頭のインデックス
      lastIndex - 範囲の最後のインデックス
      isAdjusting - 一連の調整の最後の変更である場合はtrue
      関連項目:
    • getListeners

      public <T extends EventListener> T[] getListeners(Class<T> listenerType)
      このモデルにFooListenerとして現在登録されているすべてのオブジェクトの配列を返します。 FooListenerは、addFooListenerメソッドを使用して登録されます。

      FooListener.classなどのクラス・リテラルを使用してlistenerType引数を指定できます。 たとえば、このリスト選択リスナーに対するDefaultListSelectionModelインスタンスmの照会は次のコードで行います。

      ListSelectionListener[] lsls = (ListSelectionListener[])(m.getListeners(ListSelectionListener.class));
      このようなリスナーがない場合は空の配列を返します。

      型パラメータ:
      T - EventListenerクラスの型がリクエストされています
      パラメータ:
      listenerType - 要求されるリスナーの型; java.util.EventListenerの下位インタフェースを指定
      戻り値:
      このモデルにFooListenerとして登録されているすべてのオブジェクトの配列。またはこのようなリスナーが登録されていない場合は空の配列
      例外:
      ClassCastException - listenerTypeで、java.util.EventListenerを実装するクラスまたはインタフェースが指定されなかった場合
      導入されたバージョン:
      1.3
      関連項目:
    • setLeadAnchorNotificationEnabled

      public void setLeadAnchorNotificationEnabled(boolean flag)
      leadAnchorNotificationEnabledフラグの値を設定します。
      パラメータ:
      flag - leadAnchorNotificationEnabledのブール値
      関連項目:
    • isLeadAnchorNotificationEnabled

      public boolean isLeadAnchorNotificationEnabled()
      leadAnchorNotificationEnabledフラグの値を返します。 leadAnchorNotificationEnabledがtrueの場合、選択領域のすべての変更に加えて、先頭インデックスとアンカー・インデックスへの変更をカバーする境界を使用して、モデルは通知イベントを生成します。 フラグをfalseに設定すると、最後の変更後に選択または選択解除された要素のみを含むように、イベントの境界を限定できます。 どの方法でも、モデルは先頭変数とアンカー変数を内部的に管理し続けます。 デフォルトは、trueです。

      ノート: 先頭またはアンカーは、選択領域に変更を加えなくても変更できます。 これらの変更の通知は、ビュー内で新しい先頭やアンカーを更新する必要がある場合などに重要です。 したがって、デフォルト値を変更するときはよく注意してください。

      戻り値:
      leadAnchorNotificationEnabledフラグの値
      関連項目:
    • clearSelection

      public void clearSelection()
      選択範囲を空のセットに変更します。 これによって現在の選択範囲が変更される場合には、各ListSelectionListenerに通知します。
      定義:
      clearSelection、インタフェースListSelectionModel
      関連項目:
    • setSelectionInterval

      public void setSelectionInterval(int index0, int index1)
      選択範囲をindex0以上index1以下に変更します。index0index1以下でなくてもかまいません。

      SINGLE_SELECTION選択モードでは、2番目のインデックスだけが使用されます。

      これによって現在の選択範囲が変更される場合には、各ListSelectionListenerに変更が通知されます。

      どちらかのインデックスが-1である場合、このメソッドは何も行わず、例外なしで返されます。 それ以外の場合、一方のインデックスが-1より小さい場合、IndexOutOfBoundsExceptionがスローされます。

      定義:
      setSelectionInterval、インタフェースListSelectionModel
      パラメータ:
      index0 - 範囲の一方の端の値。
      index1 - 範囲の他方の端の値
      例外:
      IndexOutOfBoundsException - 一方のインデックスが-1より小さい場合(かつ、どちらのインデックスも-1でない場合)
      関連項目:
    • addSelectionInterval

      public void addSelectionInterval(int index0, int index1)
      選択範囲を、現在の選択範囲とindex0以上index1以下のインデックスの示す範囲との和集合に変更します。

      SINGLE_SELECTION選択モードでは、これはsetSelectionIntervalの呼び出しと同等で、2番目のインデックスだけが使用されます。 SINGLE_INTERVAL_SELECTION選択モードでは、このメソッドは、指定された区間が既存の選択範囲に隣接していたりオーバーラップしていたりしないかぎりsetSelectionIntervalと同様に動作するため、範囲を拡張する目的で使用できます。

      これによって現在の選択範囲が変更される場合には、各ListSelectionListenerに変更が通知されます。 ただし、index0index1以下でなくてもかまいません。

      どちらかのインデックスが-1である場合、このメソッドは何も行わず、例外なしで返されます。 それ以外の場合、一方のインデックスが-1より小さい場合、IndexOutOfBoundsExceptionがスローされます。

      定義:
      addSelectionInterval、インタフェースListSelectionModel
      パラメータ:
      index0 - 範囲の一方の端の値。
      index1 - 範囲の他方の端の値
      例外:
      IndexOutOfBoundsException - 一方のインデックスが-1より小さい場合(かつ、どちらのインデックスも-1でない場合)
      関連項目:
    • removeSelectionInterval

      public void removeSelectionInterval(int index0, int index1)
      選択範囲を、現在の選択範囲とindex0以上index1以下のインデックスの示す範囲との差集合に変更します。index0index1以下でなくてもかまいません。

      SINGLE_INTERVAL_SELECTION選択モードでは、削除によって2つの不連続のセクションが生成される場合、削除範囲が選択範囲の末尾(値が大きいほうの端)まで拡張されます。 たとえば選択範囲が0-10である場合、ユーザーが任意の順序でインデックス5,6を指定すると、結果として得られる選択範囲は0-4になります。

      これによって現在の選択範囲が変更される場合には、各ListSelectionListenerに変更が通知されます。

      どちらかのインデックスが-1である場合、このメソッドは何も行わず、例外なしで返されます。 それ以外の場合、一方のインデックスが-1より小さい場合、IndexOutOfBoundsExceptionがスローされます。

      定義:
      removeSelectionInterval、インタフェースListSelectionModel
      パラメータ:
      index0 - 範囲の一方の端の値
      index1 - 範囲の他方の端の値
      例外:
      IndexOutOfBoundsException - 一方のインデックスが-1より小さい場合(かつ、どちらのインデックスも-1でない場合)
      関連項目:
    • insertIndexInterval

      public void insertIndexInterval(int index, int length, boolean before)
      indexの前/後から始まるlengthインデックスを挿入します。 インデックスの値自体が選択され、選択モードがSINGLE_SELECTIONでない場合は、新しく挿入された項目をすべて選択済として設定します。 そうでない場合は未選択のままにします。 通常、このメソッドは、データ・モデル内の対応する変更に選択モデルを同期させるために呼び出されます。
      定義:
      insertIndexInterval、インタフェースListSelectionModel
      パラメータ:
      index - 区間の始まり
      length - 区間の長さ
      before - trueの場合、intervalはindexの前に挿入され、それ以外の場合、intervalはindexの後に挿入されます
    • removeIndexInterval

      public void removeIndexInterval(int index0, int index1)
      選択モデルから、index0とindex1を両端として含む区間のインデックスを削除します。 通常、このメソッドは、データ・モデル内の対応する変更に選択モデルを同期させるために呼び出されます。 index0は、(他の場合と同様に)index1以下である必要はありません。
      定義:
      removeIndexInterval、インタフェースListSelectionModel
      パラメータ:
      index0 - 区間の始まり
      index1 - 区間の終わり
    • setValueIsAdjusting

      public void setValueIsAdjusting(boolean isAdjusting)
      選択に対する複数の変更を1つの変更の一部であると見なすかどうかを指定する、valueIsAdjustingプロパティを設定します。 このプロパティの値を使って、生成されたListSelectionEventvalueIsAdjustingプロパティを初期化できます。

      たとえば、ユーザーのドラッグに応じて選択が更新される場合、このプロパティの値は、ドラッグの開始時にはtrue、終了時にはfalseに設定できます。 ドラッグ中、リスナーは、valueIsAdjustingプロパティの値がtrueに設定されたイベントを受信します。 ドラッグの終了時、変更がファイナライズされると、リスナーが受信するイベントのプロパティの値はfalseになります。 リスナーは、変更がファイナライズされたときにだけ更新を実行する場合に、このパターンを使用できます。

      このプロパティの値をtrueに設定すると、1回の変更の一部と見なされる一連の変更がスタートします。 プロパティの値をfalseに戻すと、選択全体の変更(選択があった場合)を記述する、valueIsAdjustingプロパティの値がfalseに設定されたイベントが送信されます。

      定義:
      setValueIsAdjusting、インタフェースListSelectionModel
      パラメータ:
      isAdjusting - プロパティの新しい値
      関連項目:
    • toString

      public String toString()
      このオブジェクトのプロパティを表示および識別する文字列を返します。
      オーバーライド:
      toString、クラスObject
      戻り値:
      このオブジェクトのString表現
    • clone

      public Object clone() throws CloneNotSupportedException
      この選択モデルの複製を、同じ選択状態で返します。listenerListsは複製されません。
      オーバーライド:
      clone、クラスObject
      戻り値:
      このインスタンスの複製。
      例外:
      CloneNotSupportedException - 選択モデルが、(a) Cloneableインタフェースを実装せず、また(b) cloneメソッドを定義しない場合。
      関連項目:
    • getAnchorSelectionIndex

      public int getAnchorSelectionIndex()
      setSelectionInterval()、addSelectionInterval()、またはremoveSelectionInterval()の直前の呼び出しから、最初のインデックス引数を返します。 直前のindex0が「アンカー」、直前のindex1が「リード」と見なされます。 インタフェースによっては、これらのインデックスが特別な方法で表示されます。たとえばWindows95では、リード・インデックスが黄色い点線の輪郭で表示されます。
      定義:
      getAnchorSelectionIndex、インタフェースListSelectionModel
      戻り値:
      アンカー選択インデックス
      関連項目:
    • getLeadSelectionIndex

      public int getLeadSelectionIndex()
      setSelectionInterval()、addSelectionInterval()、またはremoveSelectionInterval()の直前の呼び出しから、2番目のインデックス引数を返します。
      定義:
      getLeadSelectionIndex、インタフェースListSelectionModel
      戻り値:
      リード選択インデックス
      関連項目:
    • setAnchorSelectionIndex

      public void setAnchorSelectionIndex(int anchorIndex)
      アンカー選択インデックスを設定して、すべての選択値を変更しないままにします。 leadAnchorNotificationEnabledがtrueの場合、新旧のアンカー・セルを対象とする通知を送信します。
      定義:
      setAnchorSelectionIndex、インタフェースListSelectionModel
      パラメータ:
      anchorIndex - アンカー選択インデックス
      関連項目:
    • moveLeadSelectionIndex

      public void moveLeadSelectionIndex(int leadIndex)
      先頭の選択インデックスを設定して、すべての選択値を未変更のままにします。 leadAnchorNotificationEnabledがtrueの場合、新旧の先頭セルを対象とする通知を送信します。
      パラメータ:
      leadIndex - 新しい先頭の選択インデックス
      導入されたバージョン:
      1.5
      関連項目:
    • setLeadSelectionIndex

      public void setLeadSelectionIndex(int leadIndex)
      先頭の選択インデックスを設定し、アンカーと新しい先頭の間の値が、すべて選択またはすべて選択解除のどちらかであることを保証します。 アンカー・インデックスの値を選択すると、[anchor, oldLeadIndex]範囲内のすべての値をまずクリアしてから、[anchor, newLeadIndex]範囲内のすべての値を選択します。oldLeadIndexは古いleadIndexを表し、newLeadIndexは新しいleadIndexを表します。

      アンカー・インデックスの値が選択されていない場合は、同じことを逆に行います。つまり、古い範囲の値を選択してから新しい範囲の値を選択解除します。

      この変更のイベントを1つ生成し、すべてのリスナーに通知します。 このイベント内で最小限の境界を生成するために、1回のパスで操作を行います。この方法では、ブロードキャストされたListSelectionEvent内の先頭と末尾のインデックスは、このメソッドによって実際に値が変更されたセルを参照します。 この操作を2回のステップで処理すると、選択状態の効果は同じでも、2つのイベントが生成されてしまいます。さらに、後で設定する目的でのみクリアされるセルが発生してしまい、変更対象の値に関連して操作される領域が広くなります。

      このメソッドをUIクラスのmouseDraggedメソッドで使うと、選択を拡張できます。

      定義:
      setLeadSelectionIndex、インタフェースListSelectionModel
      パラメータ:
      leadIndex - リード選択インデックス
      関連項目: