java.lang.Object javax.swing.plaf.ComponentUI javax.swing.plaf.ComboBoxUI javax.swing.plaf.basic.BasicComboBoxUI
public class BasicComboBoxUI
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) 返回对象的第 i 个 Accessible 子对象。 |
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 |
字段详细信息 |
---|
protected JComboBox comboBox
protected boolean hasFocus
protected JList listBox
protected CellRendererPane currentValuePane
protected ComboPopup popup
protected Component editor
protected JButton arrowButton
protected KeyListener keyListener
createKeyListener()
protected FocusListener focusListener
createFocusListener()
protected PropertyChangeListener propertyChangeListener
protected ItemListener itemListener
createItemListener()
protected MouseListener popupMouseListener
protected MouseMotionListener popupMouseMotionListener
protected KeyListener popupKeyListener
protected ListDataListener listDataListener
createListDataListener()
protected boolean isMinimumSizeDirty
protected Dimension cachedMinimumSize
构造方法详细信息 |
---|
public BasicComboBoxUI()
方法详细信息 |
---|
public static ComponentUI createUI(JComponent c)
public void installUI(JComponent c)
ComponentUI
复制的描述
ComponentUI
实例将作为 UI 委托安装在指定组件上时,可调用此方法。此方法应该为外观完整地配置组件,包括以下方面:
LayoutManager
。 PropertyChangeListener
。
ComponentUI
中的
installUI
c
- 将安装此 UI 委托的组件
ComponentUI.uninstallUI(javax.swing.JComponent)
,
JComponent.setUI(javax.swing.plaf.ComponentUI)
,
JComponent.updateUI()
public void uninstallUI(JComponent c)
ComponentUI
复制的描述
installUI
期间,在指定组件上反向执行的配置操作。当此
UIComponent
实例将作为 UI 委托从指定组件上移除时,可调用此方法。此方法应该取消在
installUI
中执行的配置操作,非常小心地使
JComponent
实例处于某种洁净状态(没有额外的侦听器、没有特定于外观的属性对象等等)。配置内容应该包括以下方面:
ComponentUI
中的
uninstallUI
c
- 从中移除此 UI 委托的组件;此参数常被忽略,但如果 UI 对象是无状态的并由多个组件共享,则可以使用该参数
ComponentUI.installUI(javax.swing.JComponent)
,
JComponent.updateUI()
protected void installDefaults()
protected void installListeners()
protected void uninstallDefaults()
protected void uninstallListeners()
installListeners
中添加的相同。
protected ComboPopup createPopup()
ComboPopup
的实例
ComboPopup
protected KeyListener createKeyListener()
KeyListener
。如果此方法返回 null,则不会将其添加到组合框。
KeyListener
的实例或 null
protected FocusListener createFocusListener()
FocusListener
。如果此方法返回 null,则不会将其添加到组合框。
FocusListener
的实例或 null
protected ListDataListener createListDataListener()
ComboBoxModel
的列表数据侦听器。如果此方法返回 null,则不会将其添加到组合框模型。
ListDataListener
的实例或 null
protected ItemListener createItemListener()
ItemListener
。如果此方法返回 null,则不会将其添加到组合框。
子类可以重写此方法以返回其 ItemEvent 处理程序的实例。
ItemListener
的实例或 null
protected PropertyChangeListener createPropertyChangeListener()
PropertyChangeListener
。如果此方法返回 null,则不会将其添加到组合框。
PropertyChangeListener
的实例或 null
protected LayoutManager createLayoutManager()
protected ListCellRenderer createRenderer()
setRenderer
显式设置渲染器时才使用默认渲染器。
ListCellRender
JComboBox.setRenderer(javax.swing.ListCellRenderer)
protected ComboBoxEditor createEditor()
setEditor
显式设置编辑器时才使用默认编辑器。
ComboBoxEditor
JComboBox.setEditor(javax.swing.ComboBoxEditor)
protected void installComponents()
protected void uninstallComponents()
public void addEditor()
ComboBoxEditor
public void removeEditor()
addEditor()
protected void configureEditor()
addEditor()
protected void unconfigureEditor()
addEditor()
public void configureArrowButton()