Module java.desktop

Class BasicComboBoxUI

直接已知的子类:
MetalComboBoxUI, SynthComboBoxUI

public class BasicComboBoxUI extends ComboBoxUI
JComboBox的基本UI实现。

组合框是一个复合组件,这意味着它是许多更简单组件的聚合体。这个类创建并管理组合框和组合框模型上的监听器。这些监听器根据组合框的属性和状态的变化更新用户界面。

所有事件处理都由使用createxxxListener()方法和内部类创建的监听器类处理。您可以通过覆盖createxxxListener()方法并提供自己的事件监听器或从此类中提供的监听器子类化来更改此类的行为。

要添加特定操作,请覆盖installKeyboardActions以响应KeyStroke绑定中添加操作。请参阅文章如何使用键绑定

  • Field Details

    • comboBox

      protected JComboBox<Object> comboBox
      JComboBox的实例。
    • hasFocus

      protected boolean hasFocus
      此受保护字段是特定于实现的。请勿直接访问或覆盖。请改为覆盖监听器构造方法。
    • listBox

      protected JList<Object> listBox
      此列表用于绘制组合框中的当前项目。
    • currentValuePane

      protected CellRendererPane currentValuePane
      用于呈现组合框中当前选择的项目。与弹出窗口的呈现无关。
    • editor

      protected Component editor
      ComboBoxEditor用于编辑的组件。
    • arrowButton

      protected JButton arrowButton
      调用弹出窗口的箭头按钮。
    • keyListener

      protected KeyListener keyListener
      此受保护字段是特定于实现的。请勿直接访问或覆盖。请改为覆盖监听器构造方法。
      参见:
    • focusListener

      protected FocusListener focusListener
      此受保护字段是特定于实现的。请勿直接访问或覆盖。请改为覆盖监听器构造方法。
      参见:
    • propertyChangeListener

      protected PropertyChangeListener propertyChangeListener
      此受保护字段是特定于实现的。请勿直接访问或覆盖。请改为覆盖监听器构造方法。
      参见:
    • itemListener

      protected ItemListener itemListener
      此受保护字段是特定于实现的。请勿直接访问或覆盖。请改为覆盖监听器构造方法。
      参见:
    • popupMouseListener

      protected MouseListener popupMouseListener
      MouseListener监听事件。
    • popupMouseMotionListener

      protected MouseMotionListener popupMouseMotionListener
      MouseMotionListener监听事件。
    • popupKeyListener

      protected KeyListener popupKeyListener
      KeyListener监听事件。
    • listDataListener

      protected ListDataListener listDataListener
      此受保护字段是特定于实现的。请勿直接访问或覆盖。请改为覆盖监听器构造方法。
      参见:
    • isMinimumSizeDirty

      protected boolean isMinimumSizeDirty
      重新计算最小首选大小的标志。
    • cachedMinimumSize

      protected Dimension cachedMinimumSize
      缓存的最小首选大小。
    • squareButton

      protected boolean squareButton
      指示组合框按钮是否应为正方形。如果是正方形,则宽度和高度相等,并且都设置为组合框的高度减去适当的插图。
      自从:
      1.7
    • padding

      protected Insets padding
      如果指定,这些插图在布局和绘制组合框中“选定”项目时充当单元格渲染器周围的填充。这些插图添加到单元格渲染器指定的插图中。
      自从:
      1.7
  • Constructor Details

    • BasicComboBoxUI

      public BasicComboBoxUI()
      构造一个BasicComboBoxUI
  • Method Details

    • createUI

      public static ComponentUI createUI(JComponent c)
      构造一个BasicComboBoxUI的新实例。
      参数:
      c - 一个组件
      返回:
      BasicComboBoxUI的新实例
    • installDefaults

      protected void installDefaults()
      将默认颜色、默认字体、默认渲染器和默认编辑器安装到JComboBox中。
    • installListeners

      protected void installListeners()
      为组合框及其模型创建和安装监听器。在安装UI时调用此方法。
    • uninstallDefaults

      protected void uninstallDefaults()
      从组合框中卸载默认颜色、默认字体、默认渲染器和默认编辑器。
    • uninstallListeners

      protected void uninstallListeners()
      从组合框及其模型中移除已安装的侦听器。此方法中移除的侦听器的数量和类型应与在installListeners中添加的相同。
    • createPopup

      protected ComboPopup createPopup()
      创建组合框的弹出部分。
      返回:
      一个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<Object> createRenderer()
      创建将在不可编辑组合框中使用的默认渲染器。仅当未使用setRenderer显式设置渲染器时,才会使用默认渲染器。
      返回:
      用于组合框的ListCellRender
      参见:
    • createEditor

      protected ComboBoxEditor createEditor()
      创建将在可编辑组合框中使用的默认编辑器。仅当未使用setEditor显式设置编辑器时,才会使用默认编辑器。
      返回:
      用于组合框的ComboBoxEditor
      参见:
    • installComponents

      protected void installComponents()
      创建并初始化组成组合框的聚合组件。此方法作为UI安装过程的一部分调用。
    • uninstallComponents

      protected void uninstallComponents()
      组成组合框的聚合组件将被注销并未初始化。此方法作为UI卸载过程的一部分调用。
    • addEditor

      public void addEditor()
      此公共方法是特定于实现的,应为私有。不要调用或覆盖。要实现特定的编辑器,请创建自定义ComboBoxEditor
      参见:
    • removeEditor

      public void removeEditor()
      此公共方法是特定于实现的,应为私有。不要调用或覆盖。
      参见:
    • configureEditor

      protected void configureEditor()
      此受保护方法是特定于实现的,应为私有。不要调用或覆盖。
      参见:
    • unconfigureEditor

      protected void unconfigureEditor()
      此受保护方法是特定于实现的,应为私有。不要调用或覆盖。
      参见:
    • configureArrowButton

      public void configureArrowButton()
      此公共方法是特定于实现的,应为私有。不要调用或覆盖。
      参见:
    • unconfigureArrowButton

      public void unconfigureArrowButton()
      此公共方法是特定于实现的,应为私有。不要调用或覆盖。
      参见:
    • createArrowButton

      protected JButton createArrowButton()
      创建一个按钮,该按钮将用作控制显示或隐藏组合框的弹出部分。
      返回:
      代表弹出控件的按钮
    • isPopupVisible

      public boolean isPopupVisible(JComboBox<?> c)
      指示弹出窗口是否可见。
      指定者:
      isPopupVisible 在类 ComboBoxUI
      参数:
      c - 一个JComboBox
      返回:
      如果JComboBox的弹出窗口可见,则为true
    • setPopupVisible

      public void setPopupVisible(JComboBox<?> c, boolean v)
      隐藏弹出窗口。
      指定者:
      setPopupVisible 在类 ComboBoxUI
      参数:
      c - 一个JComboBox
      v - 一个boolean,确定弹出窗口的可见性
    • isFocusTraversable

      public boolean isFocusTraversable(JComboBox<?> c)
      确定JComboBox是否可聚焦。如果JComboBox是可编辑的,则返回false,否则返回true。
      指定者:
      isFocusTraversable 在类 ComboBoxUI
      参数:
      c - 一个JComboBox
      返回:
      如果给定的JComboBox可聚焦,则为true
    • getMinimumSize

      public Dimension getMinimumSize(JComponent c)
      最小尺寸是显示区域加上插图加上按钮的尺寸。
      覆盖:
      getMinimumSize 在类 ComponentUI
      参数:
      c - 正在查询其最小尺寸的组件;此参数通常被忽略,但如果UI对象是无状态的并且由多个组件共享,则可能会被使用
      返回:
      一个Dimension对象或null
      参见:
    • getBaseline

      public int getBaseline(JComponent c, int width, int height)
      返回基线。
      覆盖:
      getBaseline 在类 ComponentUI
      参数:
      c - 请求基线的JComponent
      width - 获取基线的宽度
      height - 获取基线的高度
      返回:
      基线或值< 0,表示没有合理的基线
      抛出:
      NullPointerException - 如果cnull
      IllegalArgumentException - 如果宽度或高度< 0
      自:
      1.6
      参见:
    • getBaselineResizeBehavior

      public Component.BaselineResizeBehavior getBaselineResizeBehavior(JComponent c)
      返回一个枚举,指示组件的基线随尺寸变化而变化的方式。
      覆盖:
      getBaselineResizeBehavior 在类 ComponentUI
      参数:
      c - 要返回基线调整行为的JComponent
      返回:
      一个枚举,指示组件大小变化时基线如何变化
      抛出:
      NullPointerException - 如果cnull
      自:
      1.6
      参见:
    • isNavigationKey

      protected boolean isNavigationKey(int keyCode)
      返回所提供的keyCode是否映射到用于导航的键。这用于通过仅将非导航键传递给类型前进机制来优化键输入。如果更改导航键,则子类应覆盖此方法。
      参数:
      keyCode - 键码
      返回:
      true 如果提供的 keyCode 映射到导航键
    • selectNextPossibleValue

      protected void selectNextPossibleValue()
      选择列表中的下一个项目。如果当前选择的项目已经是最后一个项目,则不会更改选择。
    • selectPreviousPossibleValue

      protected void selectPreviousPossibleValue()
      选择列表中的上一个项目。如果当前选择的项目已经是第一个项目,则不会更改选择。
    • toggleOpenClose

      protected void toggleOpenClose()
      如果弹出窗口正在显示,则隐藏弹出窗口;如果弹出窗口已隐藏,则显示弹出窗口。
    • rectangleForCurrentValue

      protected Rectangle rectangleForCurrentValue()
      返回为绘制当前选择项目而保留的区域。
      返回:
      为绘制当前选择项目而保留的区域
    • getInsets

      protected Insets getInsets()
      获取 JComboBox 中的插图。
      返回:
      插图
    • paintCurrentValue

      public void paintCurrentValue(Graphics g, Rectangle bounds, boolean hasFocus)
      绘制当前选择项目。
      参数:
      g - Graphics 的一个实例
      bounds - 要渲染到的边界矩形
      hasFocus - 是否聚焦
    • paintCurrentValueBackground

      public void paintCurrentValueBackground(Graphics g, Rectangle bounds, boolean hasFocus)
      绘制当前选择项目的背景。
      参数:
      g - Graphics 的一个实例
      bounds - 要渲染到的边界矩形
      hasFocus - 是否聚焦
    • getDefaultSize

      protected Dimension getDefaultSize()
      使用当前渲染器和字体返回组合框的空显示区域的默认大小。
      返回:
      空显示区域的大小
      参见:
    • getDisplaySize

      protected Dimension getDisplaySize()
      返回计算的显示区域大小。显示区域是组合框中显示所选项目的部分。如果已设置原型显示值,此方法将使用原型显示值。

      对于具有非常多项目的组合框,建议使用原型显示值以显著加快显示大小计算速度。

      返回:
      从组合框项目计算的显示区域大小
      参见:
    • getSizeForComponent

      protected Dimension getSizeForComponent(Component comp)
      返回作为单元格渲染器时组件的大小。
      参数:
      comp - 要检查的 Component
      返回:
      组件的大小
      自 1.7 起:
      1.7
    • installKeyboardActions

      protected void installKeyboardActions()
      向 JComboBox 添加键盘操作。回车和 esc 上的操作已经提供。根据需要添加更多操作。
    • uninstallKeyboardActions

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