Module  java.desktop

Class BasicComboBoxUI

  • 已知直接子类:
    MetalComboBoxUISynthComboBoxUI


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

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

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

    要添加特定的操作,请覆盖installKeyboardActions以添加响应KeyStroke绑定的操作。 参见文章How to Use Key Bindings

    • 字段详细信息

      • hasFocus

        protected boolean hasFocus
        此保护字段是实现特定的。 不要直接访问或覆盖。
      • listBox

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

        protected CellRendererPane currentValuePane
        用于在组合框中呈现当前选定的项目。 它与弹出窗口的渲染无关。
      • popup

        protected ComboPopup popup
        执行 ComboPopup用于显示弹出窗口。
      • editor

        protected Component editor
        @ {code ComboBoxEditor}用于编辑的组件。
      • arrowButton

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

        protected KeyListener keyListener
        此保护字段是实现特定的。 不要直接访问或覆盖。 覆盖监听器构造方法。
        另请参见:
        createKeyListener()
      • focusListener

        protected FocusListener focusListener
        此保护字段是实现特定的。 不要直接访问或覆盖。 覆盖监听器构造方法。
        另请参见:
        createFocusListener()
      • itemListener

        protected ItemListener itemListener
        此保护字段是实现特定的。 不要直接访问或覆盖。 覆盖监听器构造方法。
        另请参见:
        createItemListener()
      • popupMouseListener

        protected MouseListener popupMouseListener
        MouseListener听事件。
      • popupMouseMotionListener

        protected MouseMotionListener popupMouseMotionListener
        MouseMotionListener聆听事件。
      • popupKeyListener

        protected KeyListener popupKeyListener
        KeyListener倾听事件。
      • listDataListener

        protected ListDataListener listDataListener
        此保护字段是实现特定的。 不要直接访问或覆盖。 覆盖监听器构造方法。
        另请参见:
        createListDataListener()
      • isMinimumSizeDirty

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

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

        protected boolean squareButton
        指示组合框按钮是否应该是正方形。 如果是正方形,则宽度和高度相等,并且均设置为组合的高度减去适当的插值。
        从以下版本开始:
        1.7
      • padding

        protected Insets padding
        如果指定了这些插值,则在组合框中布置和绘制“选定”项时,这些插值将围绕单元格渲染器充当填充。 这些插入添加到由单元格渲染器指定的那些。
        从以下版本开始:
        1.7
    • 构造方法详细信息

      • BasicComboBoxUI

        public BasicComboBoxUI​()
    • 方法详细信息

      • createUI

        public static ComponentUI createUI​(JComponent c)
        构造一个新的实例 BasicComboBoxUI
        参数
        c - 一个组件
        结果
        一个新的例子 BasicComboBoxUI
      • installUI

        public void installUI​(JComponent c)
        描述从类复制: ComponentUI
        适当地配置指定的组件的外观和感觉。 当安装ComponentUI实例作为指定组件上的UI委托时,将调用此方法。 该方法应该完全配置组件的外观,包括以下内容:
        1. 为组件上的颜色,字体,边框,图标,不透明度等安装默认属性值。 只要有可能,由客户端程序初始化的属性值应该被重写。
        2. 如有必要,请在组件上安装LayoutManager
        3. 创建/添加任何所需的子组件到组件。
        4. 在组件上创建/安装事件监听器。
        5. 在组件上创建/安装PropertyChangeListener ,以便适当地检测和响应组件属性的更改。
        6. 在组件上安装键盘UI(助记符,遍历等)。
        7. 初始化任何适当的实例数据。
        重写:
        installUIComponentUI
        参数
        c - 正在安装此UI c的组件
        另请参见:
        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。
        重写:
        uninstallUIComponentUI
        参数
        c - 从中删除此UI c的组件; 这个参数经常被忽略,但如果UI对象是无状态的并且被多个组件共享,则可能会被使用
        另请参见:
        ComponentUI.installUI(javax.swing.JComponent)JComponent.updateUI()
      • installDefaults

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

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

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

        protected void uninstallListeners​()
        从组合框及其模型中删除已安装的监听器。 已删除的侦听器的数量和类型应与installListeners中添加的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的列表数据监听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​()
        创建一个布局管理器来管理构成组合框的组件。
        结果
        布局管理器的一个实例
      • installComponents

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

        protected void uninstallComponents​()
        构成组合框的集合组件未注册并未初始化。 此方法被称为UI卸载过程的一部分。
      • 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)
        告诉弹出窗口是否可见。
        Specified by:
        isPopupVisibleComboBoxUI
        参数
        c - a JComboBox
        结果
        如果 JComboBox弹出窗口可见, JComboBox true
      • setPopupVisible

        public void setPopupVisible​(JComboBox<?> c,
                                    boolean v)
        隐藏弹出窗口。
        Specified by:
        setPopupVisibleComboBoxUI
        参数
        c - a JComboBox
        v - a boolean确定弹出窗口的可见性
      • isFocusTraversable

        public boolean isFocusTraversable​(JComboBox<?> c)
        确定JComboBox是否可以聚焦。 如果JComboBox是可编辑的,则返回false,否则返回true。
        Specified by:
        isFocusTraversableComboBoxUI
        参数
        c - a JComboBox
        结果
        如果给定的 JComboBox可以遍历, JComboBox true
      • paint

        public void paint​(Graphics g,
                          JComponent c)
        描述从类复制: ComponentUI
        适当地涂抹指定的组件的外观和感觉。 当正在绘制指定的组件时,将从ComponentUI.update方法调用此方法。 子类应该覆盖此方法,并使用指定的Graphics对象来呈现组件的内容。
        重写:
        paintComponentUI
        参数
        g - 要绘画的 Graphics上下文
        c - 正在画的部件 这个参数经常被忽略,但如果UI对象是无状态的并且被多个组件共享,则可能会被使用
        另请参见:
        ComponentUI.update(java.awt.Graphics, javax.swing.JComponent)
      • getPreferredSize

        public Dimension getPreferredSize​(JComponent c)
        描述从类复制: ComponentUI
        返回指定组件的偏好大小,适合外观和感觉。 如果返回null ,则首选的大小将由组件的布局管理器计算(这是安装了特定布局管理器的任何组件的首选方法)。 此方法的默认实现将返回null
        重写:
        getPreferredSizeComponentUI
        参数
        c - 要查询其首选大小的组件; 这个参数经常被忽略,但如果UI对象是无状态的并且被多个组件共享,则可能会被使用
        结果
        一个 Dimension对象,包含给定组件的首选大小,适合外观和感觉
        另请参见:
        JComponent.getPreferredSize()LayoutManager.preferredLayoutSize(java.awt.Container)
      • getMaximumSize

        public Dimension getMaximumSize​(JComponent c)
        描述从类复制: ComponentUI
        返回指定组件的最大尺寸,适合外观和感觉。 如果返回null ,则最大大小将由组件的布局管理器计算(这是安装了特定布局管理器的任何组件的首选方法)。 此方法的默认实现将调用getPreferredSize并返回该值。
        重写:
        getMaximumSizeComponentUI
        参数
        c - 查询最大大小的组件; 这个参数经常被忽略,但如果UI对象是无状态的并且被多个组件共享,则可能会被使用
        结果
        一个 Dimension对象或 null
        另请参见:
        JComponent.getMaximumSize()LayoutManager2.maximumLayoutSize(java.awt.Container)
      • getAccessibleChildrenCount

        public int getAccessibleChildrenCount​(JComponent c)
        描述从类复制: ComponentUI
        返回对象中可访问的子项数。 如果此对象的所有子项都执行Accessible ,则此方法应返回此对象的子项数。 UI可能希望覆盖这一点,如果它们显示屏幕上可以被视为组件的区域,但实际组件不用于呈现这些区域。 注意:从v1.3开始,建议开发者调用Component.AccessibleAWTComponent.getAccessibleChildrenCount()而不是这种方法。
        重写:
        getAccessibleChildrenCountComponentUI
        参数
        c - JComponent为了获取可访问的孩子的数量
        结果
        对象中可访问的孩子的数量
        另请参见:
        ComponentUI.getAccessibleChild(javax.swing.JComponent, int)
      • getAccessibleChild

        public Accessible getAccessibleChild​(JComponent c,
                                             int i)
        描述从类复制: ComponentUI
        返回对象的iAccessible个子对象。 如果屏幕上显示可以被视为组件的区域,UI可能需要重写,但实际组件不用于显示这些区域。

        注意:从v1.3开始,建议开发者调用Component.AccessibleAWTComponent.getAccessibleChild()而不是这种方法。

        重写:
        getAccessibleChildComponentUI
        参数
        c - 一个 JComponent为其获取一个子对象
        i - 基于零的儿童索引
        结果
        对象的 iAccessible孩子
        另请参见:
        ComponentUI.getAccessibleChildrenCount(javax.swing.JComponent)
      • 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()
      • getDisplaySize

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

        对于具有非常小的项目的组合框,建议使用原型显示值来显着加快显示尺寸计算。

        结果
        从组合框项目计算的显示区域的大小
        另请参见:
        JComboBox.setPrototypeDisplayValue(E)
      • getSizeForComponent

        protected Dimension getSizeForComponent​(Component comp)
        如果用作单元格渲染器,则返回组件将具有的大小。
        参数
        comp - a Component检查
        结果
        组件的大小
        从以下版本开始:
        1.7
      • installKeyboardActions

        protected void installKeyboardActions​()
        将键盘操作添加到JComboBox。 已提供enter和esc上的操作。 根据需要添加更多操作。
      • uninstallKeyboardActions

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