モジュール 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
関連項目:
ListSelectionModel
  • フィールド詳細

    • listenerList

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

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

    • DefaultListSelectionModel

      public DefaultListSelectionModel()
  • メソッドの詳細

    • 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 - 許可された選択モードでない場合
      関連項目:
      ListSelectionModel.getSelectionMode()
    • getListSelectionListeners

      public ListSelectionListener[] getListSelectionListeners()
      このDefaultListSelectionModelに登録されたすべてのリスト選択リスナーの配列を返します。
      戻り値:
      このモデルのすべてのListSelectionListener。リスト選択リスナーが現在登録されていない場合は空の配列
      導入されたバージョン:
      1.4
      関連項目:
      ListSelectionModel.addListSelectionListener(javax.swing.event.ListSelectionListener), ListSelectionModel.removeListSelectionListener(javax.swing.event.ListSelectionListener)
    • 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
      関連項目:
      EventListenerList
    • 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
      関連項目:
      getListSelectionListeners()
    • setLeadAnchorNotificationEnabled

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

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

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

      戻り値:
      leadAnchorNotificationEnabledフラグの値
      関連項目:
      setLeadAnchorNotificationEnabled(boolean)
    • 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でない場合)
      関連項目:
      ListSelectionModel.addListSelectionListener(javax.swing.event.ListSelectionListener)
    • 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でない場合)
      関連項目:
      ListSelectionModel.addListSelectionListener(javax.swing.event.ListSelectionListener), setSelectionInterval(int, int)
    • 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でない場合)
      関連項目:
      ListSelectionModel.addListSelectionListener(javax.swing.event.ListSelectionListener)
    • 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 - 区間の終わり
    • toString

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

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

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

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

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

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

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

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

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