JavaTM 2 Platform
Standard Ed. 6

javax.swing.plaf.basic
類別 BasicComboBoxUI

java.lang.Object
  繼承者 javax.swing.plaf.ComponentUI
      繼承者 javax.swing.plaf.ComboBoxUI
          繼承者 javax.swing.plaf.basic.BasicComboBoxUI
直接已知子類別:
MetalComboBoxUI

public class BasicComboBoxUI
extends ComboBoxUI

JComboBox 的基本 UI 實作。

組合框是一個組合元件,這意味著它是很多簡單元件的聚合。此類別創建和管理組合框上的偵聽器和組合框模型。這些偵聽器更新使用者介面以回應組合框的屬性和狀態的更改。

所有事件處理都是由利用 createxxxListener() 方法和內部類別創建的偵聽器類別處理的。通過覆寫 createxxxListener() 方法,並提供自己的事件偵聽器或為此類別提供的事件偵聽器創建子類別,可以更改此類別的行為。

為了添加特殊動作,需要覆寫 installKeyboardActions 來添加回應 KeyStroke 綁定的動作。請參見 The Swing Connection 中的文章 Keyboard Bindings in Swing


巢狀類別摘要
 class BasicComboBoxUI.ComboBoxLayoutManager
          此佈局管理器處理組合框的“標準”佈局。
 class BasicComboBoxUI.FocusHandler
          失去焦點時,此偵聽器將隱藏彈出部分。
 class BasicComboBoxUI.ItemHandler
          此偵聽器觀察組合框中選擇的更改。
 class BasicComboBoxUI.KeyHandler
          此偵聽器檢查鍵事件是否不是導航鍵。
 class BasicComboBoxUI.ListDataHandler
          此偵聽器觀察 ComboBoxModel 中的更改。
 class BasicComboBoxUI.PropertyChangeHandler
          此偵聽器觀察在組合框中發生更改的綁定 (bound) 屬性。
 
欄位摘要
protected  JButton arrowButton
           
protected  Dimension cachedMinimumSize
           
protected  JComboBox comboBox
           
protected  CellRendererPane currentValuePane
           
protected  Component editor
           
protected  FocusListener focusListener
          此受保護欄位是特定於實作的。
protected  boolean hasFocus
          此受保護欄位是特定於實作的。
protected  boolean isMinimumSizeDirty
           
protected  ItemListener itemListener
          此受保護欄位是特定於實作的。
protected  KeyListener keyListener
          此受保護欄位是特定於實作的。
protected  JList listBox
           
protected  ListDataListener listDataListener
          此受保護欄位是特定於實作的。
protected  ComboPopup popup
           
protected  KeyListener popupKeyListener
           
protected  MouseListener popupMouseListener
           
protected  MouseMotionListener popupMouseMotionListener
           
protected  PropertyChangeListener propertyChangeListener
          此受保護欄位是特定於實作的。
 
建構子摘要
BasicComboBoxUI()
           
 
方法摘要
 void addEditor()
          此公共方法是特定於實作的,應該為私有,不要調用或覆寫。
 void configureArrowButton()
          此公共方法是特定於實作的,應該為私有。
protected  void configureEditor()
          此受保護方法是特定於實作的,應該為私有,不要調用或覆寫。
protected  JButton createArrowButton()
          創建一個按鈕,將使用它來控制顯示或隱藏組合框的彈出部分。
protected  ComboBoxEditor createEditor()
          創建將在可編輯的組合框中使用的預設編輯器。
protected  FocusListener createFocusListener()
          創建將添加到組合框的 FocusListener
protected  ItemListener createItemListener()
          創建將添加到組合框的 ItemListener
protected  KeyListener createKeyListener()
          創建將添加到組合框的 KeyListener
protected  LayoutManager createLayoutManager()
          創建用於管理構成組合框的元件的佈局管理器。
protected  ListDataListener createListDataListener()
          創建將添加到 ComboBoxModel 的列表資料偵聽器。
protected  ComboPopup createPopup()
          創建組合框的彈出部分。
protected  PropertyChangeListener createPropertyChangeListener()
          創建將添加到組合框的 PropertyChangeListener
protected  ListCellRenderer createRenderer()
          創建將在不可編輯的組合框中使用的預設渲染器。
static ComponentUI createUI(JComponent c)
           
 Accessible getAccessibleChild(JComponent c, int i)
          返回物件的第 iAccessible 子物件。
 int getAccessibleChildrenCount(JComponent c)
          返回物件中的可存取子物件數。
 int getBaseline(JComponent c, int width, int height)
          返回基線。
 Component.BaselineResizeBehavior getBaselineResizeBehavior(JComponent c)
          返回一個列舉,它指示該元件的基線如何隨大小的改變而發生更改。
protected  Dimension getDefaultSize()
          返回使用當前渲染器和字體的組合框的空顯示區域的預設大小。
protected  Dimension getDisplaySize()
          返回顯示區域的計算大小。
protected  Insets getInsets()
          獲取 JComboBox 的 insets。
 Dimension getMaximumSize(JComponent c)
          返回指定元件的適合外觀的最大大小。
 Dimension getMinimumSize(JComponent c)
          最小大小為顯示區域加上 insets 再加上按鈕的大小。
 Dimension getPreferredSize(JComponent c)
          返回指定元件的適合外觀的首選大小。
protected  void installComponents()
          創建並初始化構成聚合組合框的元件。
protected  void installDefaults()
          將預設顏色、預設字體、預設渲染器和預設編輯器安裝到 JComboBox 中。
protected  void installKeyboardActions()
          將鍵盤動作添加到 JComboBox。
protected  void installListeners()
          為組合框及其模型創建並安裝偵聽器。
 void installUI(JComponent c)
          配置指定元件,使其適合外觀。
 boolean isFocusTraversable(JComboBox c)
          確定 JComboBox 是否是可焦點遍歷的。
protected  boolean isNavigationKey(int keyCode)
          返回提供的 keyCode 是否映射到用於導航的鍵中。
 boolean isPopupVisible(JComboBox c)
          告知彈出控制元件是否可見。
 void paint(Graphics g, JComponent c)
          繪製指定元件,使其適合外觀。
 void paintCurrentValue(Graphics g, Rectangle bounds, boolean hasFocus)
          繪製當前所選項。
 void paintCurrentValueBackground(Graphics g, Rectangle bounds, boolean hasFocus)
          繪製當前所選項的背景。
protected  Rectangle rectangleForCurrentValue()
          返回為繪製當前所選項而保留的區域。
 void removeEditor()
          此公共方法是特定於實作的,應該為私有,不要調用或覆寫。
protected  void selectNextPossibleValue()
          選擇列表中的下一項。
protected  void selectPreviousPossibleValue()
          選擇列表中的上一項。
 void setPopupVisible(JComboBox c, boolean v)
          隱藏彈出部分。
protected  void toggleOpenClose()
          如果正在顯示彈出部分,則隱藏它;如果它是隱藏的,則顯示它。
 void unconfigureArrowButton()
          此公共方法是特定於實作的,應該為私有。
protected  void unconfigureEditor()
          此受保護方法是特定於實作的,應該為私有。
protected  void uninstallComponents()
          註銷並卸載組成組合框的聚合元件。
protected  void uninstallDefaults()
          從 JComboBox 中卸載預設顏色、預設字體、預設渲染器和預設編輯器。
protected  void uninstallKeyboardActions()
          移除焦點 InputMap 和 ActionMap。
protected  void uninstallListeners()
          從組合框及其模型中移除已安裝的偵聽器。
 void uninstallUI(JComponent c)
          在 installUI 期間,在指定元件上反向執行的配置操作。
 
從類別 javax.swing.plaf.ComponentUI 繼承的方法
contains, update
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

欄位詳細資訊

comboBox

protected JComboBox comboBox

hasFocus

protected boolean hasFocus
此受保護欄位是特定於實作的。不要直接存取或覆寫。


listBox

protected JList listBox

currentValuePane

protected CellRendererPane currentValuePane

popup

protected ComboPopup popup

editor

protected Component editor

arrowButton

protected JButton arrowButton

keyListener

protected KeyListener keyListener
此受保護欄位是特定於實作的。不要直接存取或覆寫。可以改為覆寫偵聽器建構子。

另請參見:
createKeyListener()

focusListener

protected FocusListener focusListener
此受保護欄位是特定於實作的。不要直接存取或覆寫。可以改為覆寫偵聽器建構子。

另請參見:
createFocusListener()

propertyChangeListener

protected PropertyChangeListener propertyChangeListener
此受保護欄位是特定於實作的。不要直接存取或覆寫。可以改為覆寫偵聽器建構子。

另請參見:
createPropertyChangeListener()

itemListener

protected ItemListener itemListener
此受保護欄位是特定於實作的。不要直接存取或覆寫。可以改為覆寫偵聽器建構子。

另請參見:
createItemListener()

popupMouseListener

protected MouseListener popupMouseListener

popupMouseMotionListener

protected MouseMotionListener popupMouseMotionListener

popupKeyListener

protected KeyListener popupKeyListener

listDataListener

protected ListDataListener listDataListener
此受保護欄位是特定於實作的。不要直接存取或覆寫。可以改為覆寫偵聽器建構子。

另請參見:
createListDataListener()

isMinimumSizeDirty

protected boolean isMinimumSizeDirty

cachedMinimumSize

protected Dimension cachedMinimumSize
建構子詳細資訊

BasicComboBoxUI

public BasicComboBoxUI()
方法詳細資訊

createUI

public static ComponentUI createUI(JComponent c)

installUI

public void installUI(JComponent c)
從類別 ComponentUI 複製的描述
配置指定元件,使其適合外觀。當 ComponentUI 實例將作為 UI 委託安裝在指定元件上時,可調用此方法。此方法應該為外觀完整地配置元件,包括以下方面:
  1. 在元件上安裝用於顏色、字體、邊框、圖標、不透明性等方面的所有預設屬性值。只要有可能,就 應該覆寫由客戶端程序初始化的屬性值。
  2. 如有必要,可在元件上安裝一個 LayoutManager
  3. 將所需的所有子元件創建/添加到元件中。
  4. 在元件上創建/安裝事件偵聽器。
  5. 為了檢測和適當回應元件屬性更改,可在元件上創建/安裝一個 PropertyChangeListener
  6. 在元件上安裝鍵盤 UI(助記符、遍歷等等)。
  7. 初始化任何適當的實例資料。

覆寫:
類別 ComponentUI 中的 installUI
參數:
c - 將安裝此 UI 委託的元件
另請參見:
ComponentUI.uninstallUI(javax.swing.JComponent), JComponent.setUI(javax.swing.plaf.ComponentUI), JComponent.updateUI()

uninstallUI

public void uninstallUI(JComponent c)
從類別 ComponentUI 複製的描述
installUI 期間,在指定元件上反向執行的配置操作。當此 UIComponent 實例將作為 UI 委託從指定元件上移除時,可調用此方法。此方法應該取消在 installUI 中執行的配置操作,非常小心地使 JComponent 實例處於某種潔淨狀態(沒有額外的偵聽器、沒有特定於外觀的屬性物件等等)。配置內容應該套件括以下方面:
  1. 從元件中移除所有 UI 設置的邊框。
  2. 從元件上移除所有 UI 設置的佈局管理器。
  3. 從元件中移除所有 UI 添加的子元件。
  4. 從元件中移除所有 UI 添加的事件/屬性偵聽器。
  5. 從元件中移除所有 UI 安裝的鍵盤 UI。
  6. 使所有已分派的實例資料物件無效,從而允許進行 GC 操作。

覆寫:
類別 ComponentUI 中的 uninstallUI
參數:
c - 從中移除此 UI 委託的元件;此參數常被忽略,但如果 UI 物件是無狀態的並由多個元件共享,則可以使用該參數
另請參見:
ComponentUI.installUI(javax.swing.JComponent), JComponent.updateUI()

installDefaults

protected void installDefaults()
將預設顏色、預設字體、預設渲染器和預設編輯器安裝到 JComboBox 中。


installListeners

protected void installListeners()
為組合框及其模型創建並安裝偵聽器。安裝 UI 時調用此方法。


uninstallDefaults

protected void uninstallDefaults()
從 JComboBox 中卸載預設顏色、預設字體、預設渲染器和預設編輯器。


uninstallListeners

protected void uninstallListeners()
從組合框及其模型中移除已安裝的偵聽器。從此方法中移除的偵聽器的數目和型別應該與在 installListeners 中添加的相同。


createPopup

protected ComboPopup createPopup()
創建組合框的彈出部分。

返回:
ComboPopup 的實例
另請參見:
ComboPopup

createKeyListener

protected KeyListener createKeyListener()
創建將添加到組合框的 KeyListener。如果此方法返回 null,則不會將其添加到組合框。

返回:
KeyListener 的實例或 null

createFocusListener

protected FocusListener createFocusListener()
創建將添加到組合框的 FocusListener。如果此方法返回 null,則不會將其添加到組合框。

返回:
FocusListener 的實例或 null

createListDataListener

protected ListDataListener createListDataListener()
創建將添加到 ComboBoxModel 的列表資料偵聽器。如果此方法返回 null,則不會將其添加到組合框模型。

返回:
ListDataListener 的實例或 null

createItemListener

protected ItemListener createItemListener()
創建將添加到組合框的 ItemListener。如果此方法返回 null,則不會將其添加到組合框。

子類別可以覆寫此方法以返回其 ItemEvent 處理程序的實例。

返回:
ItemListener 的實例或 null

createPropertyChangeListener

protected PropertyChangeListener createPropertyChangeListener()
創建將添加到組合框的 PropertyChangeListener。如果此方法返回 null,則不會將其添加到組合框。

返回:
PropertyChangeListener 的實例或 null

createLayoutManager

protected LayoutManager createLayoutManager()
創建用於管理構成組合框的元件的佈局管理器。

返回:
佈局管理器的實例

createRenderer

protected ListCellRenderer createRenderer()
創建將在不可編輯的組合框中使用的預設渲染器。僅當沒有利用 setRenderer 顯式設置渲染器時才使用預設渲染器。

返回:
用於組合框的 ListCellRender
另請參見:
JComboBox.setRenderer(javax.swing.ListCellRenderer)

createEditor

protected ComboBoxEditor createEditor()
創建將在可編輯的組合框中使用的預設編輯器。僅當沒有利用 setEditor 顯式設置編輯器時才使用預設編輯器。

返回:
用於組合框的 ComboBoxEditor
另請參見:
JComboBox.setEditor(javax.swing.ComboBoxEditor)

installComponents

protected void installComponents()
創建並初始化構成聚合組合框的元件。此方法作為 UI 安裝進程的一部分調用。


uninstallComponents

protected void uninstallComponents()
註銷並卸載組成組合框的聚合元件。此方法作為 UI 卸載進程的一部分調用。


addEditor

public void addEditor()
此公共方法是特定於實作的,應該為私有,不要調用或覆寫。要實作特定編輯器,請創建自定義 ComboBoxEditor

另請參見:
createEditor(), JComboBox.setEditor(javax.swing.ComboBoxEditor), ComboBoxEditor

removeEditor

public void removeEditor()
此公共方法是特定於實作的,應該為私有,不要調用或覆寫。

另請參見:
addEditor()

configureEditor

protected void configureEditor()
此受保護方法是特定於實作的,應該為私有,不要調用或覆寫。

另請參見:
addEditor()

unconfigureEditor

protected void unconfigureEditor()
此受保護方法是特定於實作的,應該為私有。不要調用或覆寫。

另請參見:
addEditor()

configureArrowButton

public void configureArrowButton()
此公共方法是特定於實作的,應該為私有。不要調用或覆寫。

另請參見:
createArrowButton()

unconfigureArrowButton

public void unconfigureArrowButton()
此公共方法是特定於實作的,應該為私有。不要調用或覆寫。

另請參見:
createArrowButton()

createArrowButton

protected JButton createArrowButton()
創建一個按鈕,將使用它來控制顯示或隱藏組合框的彈出部分。

返回:
表示彈出控制元件的按鈕

isPopupVisible

public boolean isPopupVisible(JComboBox c)
告知彈出控制元件是否可見。

指定者:
類別 ComboBoxUI 中的 isPopupVisible

setPopupVisible

public void setPopupVisible(JComboBox c,
                            boolean v)
隱藏彈出部分。

指定者:
類別 ComboBoxUI 中的 setPopupVisible

isFocusTraversable

public boolean isFocusTraversable(JComboBox c)
確定 JComboBox 是否是可焦點遍歷的。如果 JComboBox 可編輯,則其返回 false;否則,返回 true。

指定者:
類別 ComboBoxUI 中的 isFocusTraversable

paint

public void paint(Graphics g,
                  JComponent c)
從類別 ComponentUI 複製的描述
繪製指定元件,使其適合外觀。在將要繪製指定元件時,從 ComponentUI.update 方法中調用此方法。子類別應該覆寫此方法並使用指定 Graphics 物件來呈現元件的內容。

覆寫:
類別 ComponentUI 中的 paint
參數:
g - 將在其中進行繪製的 Graphics 上下文
c - 將繪製的元件;此參數常被忽略,但如果 UI 物件是無狀態的並由多個元件共享,則可以使用該參數
另請參見:
ComponentUI.update(java.awt.Graphics, javax.swing.JComponent)

getPreferredSize

public Dimension getPreferredSize(JComponent c)
從類別 ComponentUI 複製的描述
返回指定元件的適合外觀的首選大小。如果返回 null,則首選大小將由元件的佈局管理器計算(對於安裝了特定佈局管理器的元件而言,這是首選方法)。此方法的預設實作返回 null

覆寫:
類別 ComponentUI 中的 getPreferredSize
參數:
c - 將查詢其首選大小的元件;此參數常被忽略,但如果 UI 物件是無狀態的並由多個元件共享,則可以使用該參數
另請參見:
JComponent.getPreferredSize(), LayoutManager.preferredLayoutSize(java.awt.Container)

getMinimumSize

public Dimension getMinimumSize(JComponent c)
最小大小為顯示區域加上 insets 再加上按鈕的大小。

覆寫:
類別 ComponentUI 中的 getMinimumSize
參數:
c - 將查詢其最小大小的元件;此參數常被忽略,但如果 UI 物件是無狀態的並由多個元件共享,則可以使用該參數
返回:
一個 Dimension 物件或 null
另請參見:
JComponent.getMinimumSize(), LayoutManager.minimumLayoutSize(java.awt.Container), ComponentUI.getPreferredSize(javax.swing.JComponent)

getMaximumSize

public Dimension getMaximumSize(JComponent c)
從類別 ComponentUI 複製的描述
返回指定元件的適合外觀的最大大小。如果返回 null,則最大大小將由元件的佈局管理器計算(對於安裝了特定佈局管理器的元件而言,這是首選方法)。此方法的預設實作調用 getPreferredSize 並返回該值。

覆寫:
類別 ComponentUI 中的 getMaximumSize
參數:
c - 將查詢其最大大小的元件;此參數常被忽略,但如果 UI 物件是無狀態的並由多個元件共享,則可以使用該參數
返回:
一個 Dimension 物件或 null
另請參見:
JComponent.getMaximumSize(), LayoutManager2.maximumLayoutSize(java.awt.Container)

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)

getAccessibleChildrenCount

public int getAccessibleChildrenCount(JComponent c)
從類別 ComponentUI 複製的描述
返回物件中的可存取子物件數。如果此物件的所有子對象都實作 Accessible,那麼此方法應返回此物件的子物件數。如果 UI 在可看作元件的螢幕上呈現一些區域,那麼它們可能希望覆寫此方法,但實際元件並不用於呈現那些區域。 註:從 v1.3 開始,建議開發人員調用 Component.AccessibleAWTComponent.getAccessibleChildrenCount() 替代此方法。

覆寫:
類別 ComponentUI 中的 getAccessibleChildrenCount
返回:
該物件中可存取的子物件數
另請參見:
ComponentUI.getAccessibleChild(javax.swing.JComponent, int)

getAccessibleChild

public Accessible getAccessibleChild(JComponent c,
                                     int i)
從類別 ComponentUI 複製的描述
返回物件的第 iAccessible 子物件。如果 UI 在可看作元件的螢幕上呈現一些區域,那麼它們可能需要覆寫此方法,但實際元件並不用於呈現那些區域。

註:從 v1.3 開始,建議開發人員調用 Component.AccessibleAWTComponent.getAccessibleChild() 替代此方法。

覆寫:
類別 ComponentUI 中的 getAccessibleChild
i - 子物件的從零開始的索引
返回:
物件的第 iAccessible 子物件
另請參見:
ComponentUI.getAccessibleChildrenCount(javax.swing.JComponent)

isNavigationKey

protected boolean isNavigationKey(int keyCode)
返回提供的 keyCode 是否映射到用於導航的鍵中。它用於僅通過將非導航鍵傳遞到提前鍵入機制來優化鍵輸入。如果子類別更改導航鍵,則其應該覆寫此方法。


selectNextPossibleValue

protected void selectNextPossibleValue()
選擇列表中的下一項。如果當前所選項已經是最後一項,則其不更改選擇。


selectPreviousPossibleValue

protected void selectPreviousPossibleValue()
選擇列表中的上一項。如果當前選擇的項已經是第一項,則其不更改選擇。


toggleOpenClose

protected void toggleOpenClose()
如果正在顯示彈出部分,則隱藏它;如果它是隱藏的,則顯示它。


rectangleForCurrentValue

protected Rectangle rectangleForCurrentValue()
返回為繪製當前所選項而保留的區域。


getInsets

protected Insets getInsets()
獲取 JComboBox 的 insets。


paintCurrentValue

public void paintCurrentValue(Graphics g,
                              Rectangle bounds,
                              boolean hasFocus)
繪製當前所選項。


paintCurrentValueBackground

public void paintCurrentValueBackground(Graphics g,
                                        Rectangle bounds,
                                        boolean hasFocus)
繪製當前所選項的背景。


getDefaultSize

protected Dimension getDefaultSize()
返回使用當前渲染器和字體的組合框的空顯示區域的預設大小。

返回:
空顯示區域的大小
另請參見:
getDisplaySize()

getDisplaySize

protected Dimension getDisplaySize()
返回顯示區域的計算大小。顯示區域是組合框的一部分,用於顯示所選項。如果已經將顯示區域設置為原型顯示值,則此方法將使用原型顯示值。

對於項數不多的組合框,建議使用原型顯示值,使用原型顯示值可以大大加速顯示大小的計算。

返回:
根據組合框項計算出的顯示區域的大小
另請參見:
JComboBox.setPrototypeDisplayValue(java.lang.Object)

installKeyboardActions

protected void installKeyboardActions()
將鍵盤動作添加到 JComboBox。Enter 鍵和 Esc 鍵上的動作已提供。根據需要添加更多動作。


uninstallKeyboardActions

protected void uninstallKeyboardActions()
移除焦點 InputMap 和 ActionMap。


JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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