JavaTM 2
Platform
Std. Ed. v1.4.0

javax.swing.plaf.basic
クラス BasicListUI

java.lang.Object
  |
  +--javax.swing.plaf.ComponentUI
        |
        +--javax.swing.plaf.ListUI
              |
              +--javax.swing.plaf.basic.BasicListUI

public class BasicListUI
extends ListUI

ListUI の Windows Look & Feel による実装です。


入れ子クラスの概要
 class BasicListUI.FocusHandler
          この内部クラスは public とマークされますが、これはコンパイラのバグが原因です。
 class BasicListUI.ListDataHandler
          installUI の実行時、および JList.model プロパティが変更された時に JList モデルに追加される ListDataListener です。
 class BasicListUI.ListSelectionHandler
          installUI の実行時、および JList.selectionModel プロパティが変更されたときに、JLists 選択モデルに追加される ListSelectionListener です。
 class BasicListUI.MouseInputHandler
          JList のためのフォーカス処理とマウス入力です。
 class BasicListUI.PropertyChangeHandler
          PropertyChangeListener は、installUI の実行時に JList に追加されます。
 
フィールドの概要
protected  int cellHeight
           
protected  int[] cellHeights
           
protected static int cellRendererChanged
           
protected  int cellWidth
           
protected static int fixedCellHeightChanged
           
protected static int fixedCellWidthChanged
           
protected  FocusListener focusListener
           
protected static int fontChanged
           
protected  JList list
           
protected  ListDataListener listDataListener
           
protected  ListSelectionListener listSelectionListener
           
protected static int modelChanged
           
protected  MouseInputListener mouseInputListener
           
protected  PropertyChangeListener propertyChangeListener
           
protected static int prototypeCellValueChanged
           
protected  CellRendererPane rendererPane
           
protected static int selectionModelChanged
           
protected  int updateLayoutStateNeeded
           
 
コンストラクタの概要
BasicListUI()
           
 
メソッドの概要
protected  int convertRowToY(int row)
          指定された行の原点の JList 相対 Y 座標を返します。
protected  int convertYToRow(int y0)
          JList の相対座標を、現在のレイアウトを基にして、座標を含む行に変換します。
protected  FocusListener createFocusListener()
           
protected  ListDataListener createListDataListener()
          モデルによって必要に応じて JList に追加される、ListDataListener のインスタンスを生成します。
protected  ListSelectionListener createListSelectionListener()
          selectionModel によって必要に応じて JList に追加される、ListSelectionHandler のインスタンスを生成します。
protected  MouseInputListener createMouseInputListener()
          MouseInputListener を実装する委譲を作成します。
protected  PropertyChangeListener createPropertyChangeListener()
          installUI() によって JList に追加される、PropertyChangeHandler のインスタンスを生成します。
static ComponentUI createUI(JComponent list)
          BasicListUI の新しいインスタンスを返します。
 Rectangle getCellBounds(JList list, int index1, int index2)
          指定された項目の JList 座標における境界を返します。
 Dimension getMaximumSize(JComponent c)
          Look & Feel に適した、指定されたコンポーネントの最大サイズを返します。
 Dimension getMinimumSize(JComponent c)
          Look & Feel に適した、指定されたコンポーネントの最小サイズを返します。
 Dimension getPreferredSize(JComponent c)
          リストの preferredSize は、配置方向によって決まります。
protected  int getRowHeight(int row)
          現在のレイアウトで、指定された行の高さを返します。
 Point indexToLocation(JList list, int index)
          指定された項目の JList 座標における原点を返します。
protected  void installDefaults()
          JList のプロパティ (フォント、フォアグラウンド、およびバックグラウンドなど) を初期化して、CellRendererPane を追加します。
protected  void installKeyboardActions()
          BasicListUI が関連付けられる JList 上のキーボードバインディングを返します。
protected  void installListeners()
          JList、そのモデル、および selectionModel のリスナーを作成およびインストールします。
 void installUI(JComponent c)
          installDefaults()installListeners()、および installKeyboardActions() を順に呼び出して、this.list を初期化します。
 int locationToIndex(JList list, Point location)
          JList 座標の点を、その位置で最も近いセルのインデックスに変換します。
protected  void maybeUpdateLayoutState()
          updateLayoutStateNeeded がゼロでなければ、updateLayoutState() を呼び出して updateLayoutStateNeeded をリセットします。
 void paint(Graphics g, JComponent c)
          Graphics オブジェクトの clipRect と交差する行をペイントします。
protected  void paintCell(Graphics g, int row, Rectangle rowBounds, ListCellRenderer cellRenderer, ListModel dataModel, ListSelectionModel selModel, int leadIndex)
          List のセルを 1 つペイントします。
protected  void selectNextIndex()
          1 つ前の行を選択して、それを強制的に可視にします。
protected  void selectPreviousIndex()
          1 つ前の行を選択して、それを強制的に可視にします。
protected  void uninstallDefaults()
          null に明示的にオーバーライドされていない JList のプロパティを設定します。
protected  void uninstallKeyboardActions()
          installKeyboardActions からインストールされたキーボードアクションの登録を解除します。
protected  void uninstallListeners()
          JList、そのモデル、および selectionModel のリスナーを削除します。
 void uninstallUI(JComponent c)
          uninstallListeners()uninstallKeyboardActions()、および uninstallDefaults() を順に呼び出して、this.list の初期化を解除します。
protected  void updateLayoutState()
          cellHeight (または cellHeights) および cellWidth の値を、現在のフォントと、fixedCellWidth、fixedCellHeight、および prototypeCellValue の現在の値を基にして計算し直します。
 
クラス javax.swing.plaf.ComponentUI から継承したメソッド
contains, getAccessibleChild, getAccessibleChildrenCount, update
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

list

protected JList list

rendererPane

protected CellRendererPane rendererPane

focusListener

protected FocusListener focusListener

mouseInputListener

protected MouseInputListener mouseInputListener

listSelectionListener

protected ListSelectionListener listSelectionListener

listDataListener

protected ListDataListener listDataListener

propertyChangeListener

protected PropertyChangeListener propertyChangeListener

cellHeights

protected int[] cellHeights

cellHeight

protected int cellHeight

cellWidth

protected int cellWidth

updateLayoutStateNeeded

protected int updateLayoutStateNeeded

modelChanged

protected static final int modelChanged
関連項目:
定数フィールド値

selectionModelChanged

protected static final int selectionModelChanged
関連項目:
定数フィールド値

fontChanged

protected static final int fontChanged
関連項目:
定数フィールド値

fixedCellWidthChanged

protected static final int fixedCellWidthChanged
関連項目:
定数フィールド値

fixedCellHeightChanged

protected static final int fixedCellHeightChanged
関連項目:
定数フィールド値

prototypeCellValueChanged

protected static final int prototypeCellValueChanged
関連項目:
定数フィールド値

cellRendererChanged

protected static final int cellRendererChanged
関連項目:
定数フィールド値
コンストラクタの詳細

BasicListUI

public BasicListUI()
メソッドの詳細

paintCell

protected void paintCell(Graphics g,
                         int row,
                         Rectangle rowBounds,
                         ListCellRenderer cellRenderer,
                         ListModel dataModel,
                         ListSelectionModel selModel,
                         int leadIndex)
List のセルを 1 つペイントします。適切な状態を計算し、セルレンダリングコンポーネントの「ラバースタンプ」を取得してから、CellRendererPane を使ってセルをペイントします。サブクラスでは、paint() ではなくこのメソッドをオーバーライドすることができます。

関連項目:
paint(java.awt.Graphics, javax.swing.JComponent)

paint

public void paint(Graphics g,
                  JComponent c)
Graphics オブジェクトの clipRect と交差する行をペイントします。このメソッドは、必要に応じて paintCell を呼び出します。サブクラスは、これらのメソッドをオーバーライドすることができます。

オーバーライド:
クラス ComponentUI 内の paint
パラメータ:
g - ペイント先となる Graphics コンテキスト
c - ペイントされるコンポーネント。この引数はしばしば無視されるが、UI オブジェクトが状態なしで複数のコンポーネントに共有される場合に使用されることがある
関連項目:
paintCell(java.awt.Graphics, int, java.awt.Rectangle, javax.swing.ListCellRenderer, javax.swing.ListModel, javax.swing.ListSelectionModel, int)

getPreferredSize

public Dimension getPreferredSize(JComponent c)
リストの preferredSize は、配置方向によって決まります。
配置方向 適切なサイズ
JList.VERTICAL リストの preferredSize は、行の高さの合計と、セルの最大幅です。JList.fixedCellHeight が指定されている場合、行の高さの合計は (cellVerticalMargins + fixedCellHeight) * model.getSize() になります。ここで rowVerticalMargins は、フォーカスを示す黄色いアウトラインを描画するために割り当てる領域に相当します。同様に、fixedCellWidth が指定されている場合は、セルの固定幅を使用します。
JList.VERTICAL_WRAP 可視の行数が 0 より大きい場合、preferredHeight は、セルの最大の高さ * visibleRowCount になります。可視の行数が 0 以下の場合、適切な高さは、現在のリストの高さと、セルの最大の高さのうちの高い方になります。適切な幅は、セルの最大幅 * 必要な列数、になります。ここで、必要な列数はリストの高さ / セルの最大の高さです。セルの最大の高さは、セルの固定の高さになるか、すべてのセルに対して繰り返し ListCellRenderer から最大の高さを検索することにより決まります。
JList.HORIZONTAL_WRAP 可視の行数が 0 より大きい場合、preferredHeight は、セルの最大の高さ * adjustedRowCount になります。ここで、visibleRowCount は、列数の指定に使用されます。水平に配置するため、行数は列数から決まります。たとえば、10 項目のモデルで可視行数が 8 だとします。表示に必要な列は 2 列ですが、8 行も必要なく、5 行で済みます。したがって、adjustedRowCount は 5 になります。

可視行数が 0 以下の場合、適切な高さは列数に従います。少なくとも 1 列で、JList の幅 (幅 / 最大セル幅) に適した範囲内の数になります。適切な高さは、モデルサイズ / 列数 * セルの最大の高さになります。セルの最大の高さは、セルの固定の高さになるか、すべてのセルに対して繰り返し ListCellRenderer から最大の高さを検索することにより決まります。

上記は、未処理である適切な幅と高さです。結果として得られる適切な幅は、上記の幅 + insets.left + insets.right で、結果として得られる適切な高さは、上記の高さ + insets.top + insets.bottom です。ここで、Insetslist.getInsets() から決まります。

オーバーライド:
クラス ComponentUI 内の getPreferredSize
パラメータ:
c - JList コンポーネント
戻り値:
リストの総サイズ
関連項目:
JComponent.getPreferredSize(), LayoutManager.preferredLayoutSize(java.awt.Container)

getMinimumSize

public Dimension getMinimumSize(JComponent c)
クラス ComponentUI の記述:
Look & Feel に適した、指定されたコンポーネントの最小サイズを返します。null が返される場合、最小サイズは代わりにコンポーネントのレイアウトマネージャによって計算されます (これは、特定のレイアウトマネージャをインストールしてあるコンポーネントの場合に推奨する方法です)。このメソッドのデフォルト実装は getPreferredSize を呼び出して、その値を返します。

オーバーライド:
クラス ComponentUI 内の getMinimumSize
パラメータ:
c - 最小サイズが照会されるコンポーネント。この引数はしばしば無視されるが、UI オブジェクトが状態なしで複数のコンポーネントに共有される場合に使用されることがある
戻り値:
適切なサイズ
関連項目:
getPreferredSize(javax.swing.JComponent)

getMaximumSize

public Dimension getMaximumSize(JComponent c)
クラス ComponentUI の記述:
Look & Feel に適した、指定されたコンポーネントの最大サイズを返します。null が返される場合、最大サイズは代わりにコンポーネントのレイアウトマネージャによって計算されます (これは、特定のレイアウトマネージャをインストールしてあるコンポーネントの場合に推奨する方法です)。このメソッドのデフォルト実装は getPreferredSize を呼び出して、その値を返します。

オーバーライド:
クラス ComponentUI 内の getMaximumSize
パラメータ:
c - 最大サイズが照会されるコンポーネント。この引数はしばしば無視されるが、UI オブジェクトが状態なしで複数のコンポーネントに共有される場合に使用されることがある
戻り値:
適切なサイズ
関連項目:
getPreferredSize(javax.swing.JComponent)

selectPreviousIndex

protected void selectPreviousIndex()
1 つ前の行を選択して、それを強制的に可視にします。

関連項目:
JList.ensureIndexIsVisible(int)

selectNextIndex

protected void selectNextIndex()
1 つ前の行を選択して、それを強制的に可視にします。

関連項目:
JList.ensureIndexIsVisible(int)

installKeyboardActions

protected void installKeyboardActions()
BasicListUI が関連付けられる JList 上のキーボードバインディングを返します。このメソッドは、installUI() 実行時に呼び出されます。

関連項目:
installUI(javax.swing.JComponent)

uninstallKeyboardActions

protected void uninstallKeyboardActions()
installKeyboardActions からインストールされたキーボードアクションの登録を解除します。このメソッドは、uninstallUI() の実行時に呼び出されます。サブクラスは、installUI の実行時に登録されたキーボードアクションをすべて、ここで削除する必要があります。

関連項目:
installUI(javax.swing.JComponent)

installListeners

protected void installListeners()
JList、そのモデル、および selectionModel のリスナーを作成およびインストールします。このメソッドは、installUI() の実行時に呼び出されます。

関連項目:
installUI(javax.swing.JComponent), uninstallListeners()

uninstallListeners

protected void uninstallListeners()
JList、そのモデル、および selectionModel のリスナーを削除します。ここで、リスナーのフィールドはすべて null にリセットされます。このメソッドは、uninstallUI() の実行時に呼び出されます。installListners との同期を保つようにしてください。

関連項目:
uninstallUI(javax.swing.JComponent), installListeners()

installDefaults

protected void installDefaults()
JList のプロパティ (フォント、フォアグラウンド、およびバックグラウンドなど) を初期化して、CellRendererPane を追加します。フォント、フォアグラウンド、およびバックグラウンドの各プロパティは、それらの現在の値が null か UIResource である場合にだけ設定されます。その他のプロパティは、現在の値が null である場合に設定されます。

関連項目:
uninstallDefaults(), installUI(javax.swing.JComponent), CellRendererPane

uninstallDefaults

protected void uninstallDefaults()
null に明示的にオーバーライドされていない JList のプロパティを設定します。現在の値が UIResouce でなければ、プロパティはオーバーライドされたと判断されます。

関連項目:
installDefaults(), uninstallUI(javax.swing.JComponent), CellRendererPane

installUI

public void installUI(JComponent c)
installDefaults()installListeners()、および installKeyboardActions() を順に呼び出して、this.list を初期化します。

オーバーライド:
クラス ComponentUI 内の installUI
パラメータ:
c - UI 委譲がインストールされているコンポーネント
関連項目:
installDefaults(), installListeners(), installKeyboardActions()

uninstallUI

public void uninstallUI(JComponent c)
uninstallListeners()uninstallKeyboardActions()、および uninstallDefaults() を順に呼び出して、this.list の初期化を解除します。this.list は null に設定されます。

オーバーライド:
クラス ComponentUI 内の uninstallUI
パラメータ:
c - この UI 委譲が削除されるコンポーネント。この引数はしばしば無視されるが、UI オブジェクトが状態なしで複数のコンポーネントに共有される場合に使用されることがある
関連項目:
uninstallListeners(), uninstallKeyboardActions(), uninstallDefaults()

createUI

public static ComponentUI createUI(JComponent list)
BasicListUI の新しいインスタンスを返します。BasicListUI の委譲は、JList 1 つに付き 1 つが割り当てられます。

戻り値:
Winodws Look & Feel のための、新しい ListUI の実装

locationToIndex

public int locationToIndex(JList list,
                           Point location)
JList 座標の点を、その位置で最も近いセルのインデックスに変換します。セルが指定した位置を実際に含むかどうかを判定するために、このメソッドと getCellBounds を組み合わせて使用します。モデルが空の場合、-1 を返します。

定義:
クラス ListUI 内の locationToIndex
パラメータ:
location - セルの JList 上の相対座標
戻り値:
指定された位置にあるセルのインデックス、または -1
関連項目:
ListUI.locationToIndex(javax.swing.JList, java.awt.Point)

indexToLocation

public Point indexToLocation(JList list,
                             int index)
クラス ListUI の記述:
指定された項目の JList 座標における原点を返します。無効なインデックスを指定した場合は、null を返します。

定義:
クラス ListUI 内の indexToLocation
パラメータ:
index - JList セルのインデックス
戻り値:
index で指定された番号のセルの原点。index が無効の場合は null
関連項目:
ListUI.indexToLocation(javax.swing.JList, int)

getCellBounds

public Rectangle getCellBounds(JList list,
                               int index1,
                               int index2)
クラス ListUI の記述:
指定された項目の JList 座標における境界を返します。無効なインデックスを指定した場合は、null を返します。

定義:
クラス ListUI 内の getCellBounds
戻り値:
index で指定された番号のセルの境界
関連項目:
ListUI.getCellBounds(javax.swing.JList, int, int)

getRowHeight

protected int getRowHeight(int row)
現在のレイアウトで、指定された行の高さを返します。

戻り値:
指定された行の高さ。行の指定が無効な場合は -1
関連項目:
convertYToRow(int), convertRowToY(int), updateLayoutState()

convertYToRow

protected int convertYToRow(int y0)
JList の相対座標を、現在のレイアウトを基にして、座標を含む行に変換します。y0 がどの行にも含まれない場合は、-1 を返します。

戻り値:
y0 を含む行、または -1
関連項目:
getRowHeight(int), updateLayoutState()

convertRowToY

protected int convertRowToY(int row)
指定された行の原点の JList 相対 Y 座標を返します。行が無効な場合は -1 を返します。

戻り値:
行の原点の Y 座標、または -1
関連項目:
getRowHeight(int), updateLayoutState()

maybeUpdateLayoutState

protected void maybeUpdateLayoutState()
updateLayoutStateNeeded がゼロでなければ、updateLayoutState() を呼び出して updateLayoutStateNeeded をリセットします。このメソッドは、リストのジオメトリに基づくなんらかの処理をする前に、他のメソッドで呼び出すようにしてください。たとえば、paint() および getPreferredSize() で、最初に呼び出してください。

関連項目:
updateLayoutState()

updateLayoutState

protected void updateLayoutState()
cellHeight (または cellHeights) および cellWidth の値を、現在のフォントと、fixedCellWidth、fixedCellHeight、および prototypeCellValue の現在の値を基にして計算し直します。

関連項目:
maybeUpdateLayoutState()

createMouseInputListener

protected MouseInputListener createMouseInputListener()
MouseInputListener を実装する委譲を作成します。この委譲は、installUI() の実行時に、対応する java.awt.Component のリスナーリストに追加されます。サブクラスは、このメソッドをオーバーライドして独自の MouseInputListener を返すことができます。次に例を示します。
 class MyListUI extends BasicListUI {
    protected MouseInputListener createMouseInputListener() {
        return new MyMouseInputHandler();
    }
    public class MyMouseInputHandler extends MouseInputHandler {
        public void mouseMoved(MouseEvent e) {
            // do some extra work when the mouse moves
            super.mouseMoved(e);
        }
    }
 }
 

関連項目:
BasicListUI.MouseInputHandler, installUI(javax.swing.JComponent)

createFocusListener

protected FocusListener createFocusListener()

createListSelectionListener

protected ListSelectionListener createListSelectionListener()
selectionModel によって必要に応じて JList に追加される、ListSelectionHandler のインスタンスを生成します。サブクラスは、このメソッドをオーバーライドして独自の ListSelectionListener を返すことができます。次に例を示します。
 class MyListUI extends BasicListUI {
    protected ListSelectionListener createListSelectionListener() {
        return new MySelectionListener();
    }
    public class MySelectionListener extends ListSelectionHandler {
        public void valueChanged(ListSelectionEvent e) {
            // do some extra work when the selection changes
            super.valueChange(e);
        }
    }
 }
 

関連項目:
BasicListUI.ListSelectionHandler, installUI(javax.swing.JComponent)

createListDataListener

protected ListDataListener createListDataListener()
モデルによって必要に応じて JList に追加される、ListDataListener のインスタンスを生成します。サブクラスは、このメソッドをオーバーライドして独自の ListDataListener を返すことができます。次に例を示します。
 class MyListUI extends BasicListUI {
    protected ListDataListener createListDataListener() {
        return new MyListDataListener();
    }
    public class MyListDataListener extends ListDataHandler {
        public void contentsChanged(ListDataEvent e) {
            // do some extra work when the models contents change
            super.contentsChange(e);
        }
    }
 }
 

関連項目:
ListDataListener, JList.getModel(), installUI(javax.swing.JComponent)

createPropertyChangeListener

protected PropertyChangeListener createPropertyChangeListener()
installUI() によって JList に追加される、PropertyChangeHandler のインスタンスを生成します。サブクラスは、このメソッドをオーバーライドして独自の PropertyChangeListener を返すことができます。次に例を示します。
 class MyListUI extends BasicListUI {
    protected PropertyChangeListener createPropertyChangeListener() {
        return new MyPropertyChangeListener();
    }
    public class MyPropertyChangeListener extends PropertyChangeHandler {
        public void propertyChange(PropertyChangeEvent e) {
            if (e.getPropertyName().equals("model")) {
                // do some extra work when the model changes
            }
            super.propertyChange(e);
        }
    }
 }
 

関連項目:
PropertyChangeListener, installUI(javax.swing.JComponent)

JavaTM 2
Platform
Std. Ed. v1.4.0

バグの報告と機能のリクエスト
これ以外の API リファレンスおよび開発者用ドキュメントについては、 Java 2 SDK SE 開発者用ドキュメントを参照してください。 開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、 およびコード実例が含まれています。

Java、Java 2D、および JDBC は米国ならびにその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.