JavaTM 2 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
          此內部類別因編譯器故障而被標記為“公開”。
 class BasicListUI.ListDataHandler
          在 installUI 時和只要 JList.model 屬性更改時就要添加到 JList 模型的 ListDataListener。
 class BasicListUI.ListSelectionHandler
          在 installUI 時和只要 JList.selectionModel 屬性更改時就要添加到 JList 模型的 ListSelectionListener。
 class BasicListUI.MouseInputHandler
          鼠標輸入和 JList 的焦點處理。
 class BasicListUI.PropertyChangeHandler
          在 installUI 時添加到 JList 的 PropertyChangeListener。
 
欄位摘要
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 坐標,如果 row 無效,則返回 -1。
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)
          返回給定列表坐標系統中的有界矩形,單元的範圍由兩個索引指定。
 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 為非 0,則調用 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 單元格:計算相關狀態,獲取“橡皮圖章”單元格渲染器元件,然後使用 CellRendererPane 來繪製它。
protected  void selectNextIndex()
          選擇下一行並強行使其可見。
protected  void selectPreviousIndex()
          選擇前一行並強行使其可見。
protected  void uninstallDefaults()
          將尚未顯式覆寫的 JList 屬性設置為 null。
protected  void uninstallKeyboardActions()
          註銷根據 installKeyboardActions 安裝的鍵盤動作。
protected  void uninstallListeners()
          移除 JList、其模型及其 selectionModel 的偵聽器。
 void uninstallUI(JComponent c)
          按順序調用 uninstallListeners()uninstallKeyboardActions()uninstallDefaults() 來取消初始化 this.list
protected  void updateLayoutState()
          基於當前字體和 fixedCellWidth、fixedCellHeight 和 prototypeCellValue 的當前值重新計算 cellHeight(一個或多個)和 cellWidth 的值。
 
從類別 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 單元格:計算相關狀態,獲取“橡皮圖章”單元格渲染器元件,然後使用 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,則首選高度為列表的當前高度或最大單元格除錯,取其中的較大者。首選寬度則為最大單元格寬度 * 所需的列數。其中所需的列數為 list.height / 最大單元格高度。最大單元格高度或者是固定單元高度,或者通過對所有單元格進行迭代以從 ListCellRenderer 中尋找最大高度來確定。
JList.HORIZONTAL_WRAP 如果可見行計數大於 0,則 preferredHeight 即為最大單元格高度 * adjustedRowCount。其中 visibleRowCount 用於確定列數。因為此操作進行水平佈置,所以行數將根據列數來確定。例如,假設一個模型有 10 個項和 8 個可見行計數。顯示此模型所需的列數是 2,但是不再需要 8 行來顯示,只需 5 行,因此 adjustedRowCount 為 5。

如果可見行計數 <= 0,則首選高度由列數規定,列數的多少以適合 JList 的寬度為準(寬度 / 最大單元格寬度),但至少為一列。首選高度則為模型大小 / 列數 * 最大單元格高度。最大單元格高度或者是固定單元高度,或者通過對所有單元格進行迭代以從 ListCellRenderer 中尋找最大高度來確定。

上述內容指定原始首選寬度和高度。所產生的首選寬度為上述寬度 + insets.left + insets.right,所產生的首選高度為上述高度 + insets.top + insets.bottom。其中 Insets 根據 list.getInsets() 確定。

覆寫:
類別 ComponentUI 中的 getPreferredSize
參數:
c - JList 元件。
返回:
列表的總大小。
另請參見:
JComponent.getPreferredSize(), LayoutManager.preferredLayoutSize(java.awt.Container)

selectPreviousIndex

protected void selectPreviousIndex()
選擇前一行並強行使其可見。

另請參見:
JList.ensureIndexIsVisible(int)

selectNextIndex

protected void selectNextIndex()
選擇下一行並強行使其可見。

另請參見:
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() 時調用此方法,它應該與 installListeners 保持同步。

另請參見:
uninstallUI(javax.swing.JComponent), installListeners()

installDefaults

protected void installDefaults()
初始化 JList 屬性(如字體、前景和背景)並添加 CellRendererPane。僅當字體、前景和背景屬性的當前值為 null 或 UIResource 時才設置這些屬性,其他屬性在當前值為 null 時設置。

另請參見:
uninstallDefaults(), installUI(javax.swing.JComponent), CellRendererPane

uninstallDefaults

protected void uninstallDefaults()
將尚未顯式覆寫的 JList 屬性設置為 null。如果某個屬性的當前值不是 UIResource,則視為被覆寫。

另請參見:
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 的新實例。為每個 JList 分派一個 BasicListUI 委託。

返回:
Windows 外觀的新的 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)
返回給定列表坐標系統中的有界矩形,單元的範圍由兩個索引指定。可以按任意順序提供索引。

如果較小索引超出單元的列表範圍,則此方法返回 null。如果較小索引有效,但較大索引超出列表範圍,則只返回第一個索引的邊界。否則,返回有效範圍的邊界。

指定者:
類別 ListUI 中的 getCellBounds
參數:
list - 列表
index1 - 範圍內第一個索引
index2 - 範圍內第二個索引
返回:
單元範圍的有界矩形或 null

getRowHeight

protected int getRowHeight(int row)
返回基於當前佈局的指定行的高度。

返回:
指定行高度,如果 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 坐標,如果 row 無效,則返回 -1。

返回:
包含行原點的 Y 坐標,或者返回 -1。
另請參見:
getRowHeight(int), updateLayoutState()

maybeUpdateLayoutState

protected void maybeUpdateLayoutState()
如果 updateLayoutStateNeeded 為非 0,則調用 updateLayoutState() 並重置 updateLayoutStateNeeded。各種方法在進行任何基於列表幾何形狀的計算之前應該調用此方法。例如,在 paint() 和 getPreferredSize() 中首先調用此方法。

另請參見:
updateLayoutState()

updateLayoutState

protected void updateLayoutState()
基於當前字體和 fixedCellWidth、fixedCellHeight 和 prototypeCellValue 的當前值重新計算 cellHeight(一個或多個)和 cellWidth 的值。

另請參見:
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
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only