JavaTM Platform
Standard Ed. 6

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 の拡張実装です。  

複数のリスト間で BasicListUI インスタンスを共有することはできません。


入れ子のクラスの概要
 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 の新しいインスタンスを返します。
 int getBaseline(JComponent c, int width, int height)
          ベースラインを返します。
 Component.BaselineResizeBehavior getBaselineResizeBehavior(JComponent c)
          コンポーネントのサイズが変化するにつれてベースラインが変化する方法の列挙を返します。
 Rectangle getCellBounds(JList list, int index1, int index2)
          2 つのインデックスで指定されたセルの範囲を示す、指定されたリストの座標系内の境界の矩形を返します。
 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, getMaximumSize, getMinimumSize, 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)

getBaseline

public int getBaseline(JComponent c,
                       int width,
                       int height)
ベースラインを返します。

オーバーライド:
クラス ComponentUI 内の getBaseline
パラメータ:
c - 要求される JComponent ベースライン
width - ベースラインを取得する幅
height - ベースラインを取得する高さ
戻り値:
ベースラインまたは 0 より小さい値 (適切なベースラインが 存在しない)
例外:
NullPointerException - cnull の場合
IllegalArgumentException - 幅または高さが 0 より小さい場合
導入されたバージョン:
1.6
関連項目:
JComponent.getBaseline(int, int)

getBaselineResizeBehavior

public Component.BaselineResizeBehavior getBaselineResizeBehavior(JComponent c)
コンポーネントのサイズが変化するにつれてベースラインが変化する方法の列挙を返します。

オーバーライド:
クラス ComponentUI 内の getBaselineResizeBehavior
パラメータ:
c - ベースラインのサイズ変更の動作を返す JComponent
戻り値:
コンポーネントのサイズ変更に伴うベースラインの変化を示す 列挙型の値
例外:
NullPointerException - cnull の場合
導入されたバージョン:
1.6
関連項目:
JComponent.getBaseline(int, 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)

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
パラメータ:
list - リスト
location - 点の座標
戻り値:
指定された位置にもっとも近いセルインデックス、または -1
例外:
NullPointerException - location が null の場合

indexToLocation

public Point indexToLocation(JList list,
                             int index)
リストの座標系内の指定された項目の指定された JList 内の原点を返します。インデックスが有効でない場合は、null を返します。

定義:
クラス ListUI 内の indexToLocation
パラメータ:
list - リスト
index - セルのインデックス
戻り値:
セルの原点、または null

getCellBounds

public Rectangle getCellBounds(JList list,
                               int index1,
                               int index2)
2 つのインデックスで指定されたセルの範囲を示す、指定されたリストの座標系内の境界の矩形を返します。これらのインデックスは、任意の順序で指定できます。  

小さいほうのインデックスがリストのセルの範囲外にある場合、このメソッドは null を返します。小さいほうのインデックスが有効であっても、大きいほうのインデックスがリストの範囲外にある場合、最初のインデックスの境界だけが返されます。そうでない場合、有効な範囲の境界が返されます。

定義:
クラス ListUI 内の getCellBounds
パラメータ:
list - リスト
index1 - 範囲の先頭のインデックス
index2 - 範囲の 2 番目のインデックス
戻り値:
セルの範囲を示す境界の矩形、または null

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 Platform
Standard Ed. 6

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

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。