模块 java.desktop

类 JComboBox<E>

类型参数:
E - 此组合框元素的类型
所有已实现的接口:
ActionListener , ImageObserver , ItemSelectable , MenuContainer , Serializable , EventListener , Accessible , ListDataListener

@JavaBean (defaultProperty ="UI", description ="A combination of a text field and a drop-down list.") public class JComboBox<E> extends JComponent implements ItemSelectable , ListDataListener , ActionListener , Accessible
组合按钮或可编辑字段和下拉列表的组件。用户可以从应用户请求出现的下拉列表中选择一个值。如果您使组合框可编辑,则组合框包含一个可编辑字段,用户可以在其中键入值。

Warning: Swing 不是线程安全的。有关详细信息,请参阅 Swing 的线程策略

Warning: 此类的序列化对象将与未来的 Swing 版本不兼容。当前的序列化支持适用于运行相同版本 Swing 的应用程序之间的短期存储或 RMI。从 1.4 开始,对所有 JavaBeans 的长期存储的支持已添加到 java.beans 包中。请参阅 XMLEncoder

有关详细信息,请参阅 The Java Tutorial 中的 如何使用组合框

自从:
1.2
参见:
  • 字段详细信息

  • 构造方法详细信息

    • JComboBox

      public JComboBox(ComboBoxModel <E > aModel)
      创建一个 JComboBox,它从现有的 ComboBoxModel 中获取其项目。由于提供了 ComboBoxModel,使用此构造函数创建的组合框不会创建默认组合框模型,并且可能会影响插入、删除和添加方法的行为方式。
      参数:
      aModel - 提供显示的项目列表的 ComboBoxModel
      参见:
    • JComboBox

      public JComboBox(E [] items)
      创建一个包含指定数组中的元素的 JComboBox。默认情况下,数组中的第一项(以及数据模型)被选中。
      参数:
      items - 要插入组合框的对象数组
      参见:
    • JComboBox

      public JComboBox(Vector <E > items)
      创建一个包含指定 Vector 中的元素的 JComboBox。默认情况下,向量中的第一项(以及数据模型)被选中。
      参数:
      items - 要插入组合框的向量数组
      参见:
    • JComboBox

      public JComboBox()
      使用默认数据模型创建 JComboBox。默认数据模型是一个空的对象列表。使用 addItem 添加项目。默认情况下,数据模型中的第一项被选中。
      参见:
  • 方法详情

    • installAncestorListener

      protected void installAncestorListener()
      注册祖先监听器,以便在它或其任何祖先移动或变得可见或不可见时接收 AncestorEvents。在包含层次结构中添加或删除组件或其祖先时,也会发送事件。
    • setUI

      @BeanProperty (hidden =true, visualUpdate =true, description ="The UI object that implements the Component\'s LookAndFeel.") public void setUI(ComboBoxUI  ui)
      设置呈现此组件的 L&F 对象。
      参数:
      ui - ComboBoxUI L&F 对象
      参见:
    • updateUI

      public void updateUI()
      将 UI 属性重置为当前外观的值。
      重写:
      updateUI 在类 JComponent
      参见:
    • getUIClassID

      @BeanProperty (bound =false) public String  getUIClassID()
      返回呈现此组件的 L&F 类的名称。
      重写:
      getUIClassID 在类 JComponent
      返回:
      字符串“ComboBoxUI”
      参见:
    • getUI

      public ComboBoxUI  getUI()
      返回呈现此组件的 L&F 对象。
      重写:
      getUI 在类 JComponent
      返回:
      呈现此组件的 ComboBoxUI 对象
    • setModel

      @BeanProperty (description ="Model that the combo box uses to get data to display.") public void setModel(ComboBoxModel <E > aModel)
      设置 JComboBox 用于获取项目列表的数据模型。
      参数:
      aModel - 提供显示的项目列表的 ComboBoxModel
    • getModel

      public ComboBoxModel <E > getModel()
      返回 JComboBox 当前使用的数据模型。
      返回:
      ComboBoxModel 提供显示的项目列表
    • setLightWeightPopupEnabled

      @BeanProperty (expert =true, description ="Set to <code>false</code> to require heavyweight popups.") public void setLightWeightPopupEnabled(boolean aFlag)
      设置 lightWeightPopupEnabled 属性,它提供了关于是否应使用轻量级 Component 来包含 JComboBox 以及重量级 Component(例如 PanelWindow)的提示。轻量级与重量级的决定最终取决于JComboBox。轻量级窗口比重量级窗口更有效,但轻量级和重量级组件在 GUI 中不能很好地混合。如果您的应用程序混合了轻量级和重量级组件,您应该禁用轻量级弹出窗口。 lightWeightPopupEnabled 属性的默认值为 true ,除非外观另有规定。有些外观总是使用重量级弹出窗口,无论此属性的值是多少。

      请参阅文章 混合重型和轻型组件 此方法会触发属性更改事件。

      参数:
      aFlag - 如果是 true ,则需要轻量级弹出窗口
    • isLightWeightPopupEnabled

      public boolean isLightWeightPopupEnabled()
      获取 lightWeightPopupEnabled 属性的值。
      返回:
      lightWeightPopupEnabled 属性的值
      参见:
    • setEditable

      @BeanProperty (preferred =true, description ="If true, the user can type a new value in the combo box.") public void setEditable(boolean aFlag)
      确定 JComboBox 字段是否可编辑。可编辑的 JComboBox 允许用户在字段中键入内容或从列表中选择一个项目来初始化字段,之后可以对其进行编辑。 (编辑仅影响字段,列表项保持不变。)不可编辑的 JComboBox 显示字段中的选定项,但无法修改选择。
      参数:
      aFlag - 一个boolean,其中 true 表示该字段是可编辑的
    • isEditable

      public boolean isEditable()
      如果 JComboBox 可编辑,则返回真。默认情况下,组合框是不可编辑的。
      返回:
      如果 JComboBox 是可编辑的,则为真,否则为假
    • setMaximumRowCount

      @BeanProperty (preferred =true, description ="The maximum number of rows the popup should have") public void setMaximumRowCount(int count)
      设置 JComboBox 显示的最大行数。如果模型中的对象数大于计数,则组合框使用滚动条。
      参数:
      count - 一个整数,指定在使用滚动条之前要在列表中显示的最大项目数
    • getMaximumRowCount

      public int getMaximumRowCount()
      返回组合框在没有滚动条的情况下可以显示的最大项目数
      返回:
      一个整数,指定在使用滚动条之前列表中显示的最大项目数
    • setRenderer

      @BeanProperty (expert =true, description ="The renderer that paints the item selected in the list.") public void setRenderer(ListCellRenderer <? super E > aRenderer)
      设置绘制列表项和从 JComboBox 字段中的列表中选择的项的渲染器。如果 JComboBox 不可编辑,则使用渲染器。如果它是可编辑的,则编辑器用于呈现和编辑所选项目。

      默认渲染器显示一个字符串或一个图标。其他渲染器可以处理图形图像和合成项目。

      为了显示所选项目,aRenderer.getListCellRendererComponent 被调用,传递列表对象和索引 -1。

      参数:
      aRenderer - 显示所选项目的 ListCellRenderer
      参见:
    • getRenderer

      public ListCellRenderer <? super E > getRenderer()
      返回用于在 JComboBox 字段中显示所选项目的渲染器。
      返回:
      显示所选项目的 ListCellRenderer
    • setEditor

      @BeanProperty (expert =true, description ="The editor that combo box uses to edit the current value") public void setEditor(ComboBoxEditor  anEditor)
      设置用于绘制和编辑 JComboBox 字段中所选项目的编辑器。仅当接收 JComboBox 可编辑时才使用编辑器。如果不可编辑,组合框使用渲染器绘制所选项目。
      参数:
      anEditor - 显示所选项目的 ComboBoxEditor
      参见:
    • getEditor

      public ComboBoxEditor  getEditor()
      返回用于绘制和编辑 JComboBox 字段中所选项目的编辑器。
      返回:
      显示所选项目的 ComboBoxEditor
    • setSelectedItem

      @BeanProperty (bound =false, preferred =true, description ="Sets the selected item in the JComboBox.") public void setSelectedItem(Object  anObject)
      将组合框显示区域中的选定项目设置为参数中的对象。如果 anObject 在列表中,则显示区域显示 anObject 已选中。

      如果anObjectnot在列表中并且组合框是不可编辑的,它不会改变当前的选择。对于可编辑的组合框,选择将更改为 anObject

      如果这构成所选项目的更改,添加到组合框的 ItemListener 将收到一个或两个 ItemEvent 的通知。如果有当前选中的项目,将触发 ItemEvent 并且状态更改为 ItemEvent.DESELECTED 。如果 anObject 在列表中且当前未被选中,则将触发 ItemEvent 并且状态更改为 ItemEvent.SELECTED

      添加到组合框的 ActionListener 将在调用此方法时收到 ActionEvent 通知。

      参数:
      anObject - 要选择的列表对象;使用 null 清除选择
    • getSelectedItem

      public Object  getSelectedItem()
      返回当前选择的项目。

      如果组合框是可编辑的,则此值可能未使用 addIteminsertItemAt 或数据构造函数添加到组合框。

      返回:
      当前选择的对象
      参见:
    • setSelectedIndex

      @BeanProperty (bound =false, preferred =true, description ="The item at index is selected.") public void setSelectedIndex(int anIndex)
      选择索引 anIndex 处的项目。
      参数:
      anIndex - 一个整数,指定要选择的列表项,其中 0 指定列表中的第一项,-1 表示未选择
      抛出:
      IllegalArgumentException - 如果 anIndex < -1 或 anIndex 大于或等于大小
    • getSelectedIndex

      public int getSelectedIndex()
      返回列表中与给定项匹配的第一项。如果 JComboBox 允许选择不在列表中的项目,则结果并不总是定义。如果没有选定的项目或用户指定的项目不在列表中,则返回 -1。
      返回:
      指定当前选定列表项的整数,其中 0 指定列表中的第一项;或 -1 如果未选择任何项目或当前选择的项目不在列表中
    • getPrototypeDisplayValue

      public E  getPrototypeDisplayValue()
      返回“原型显示”值 - 用于计算显示高度和宽度的对象。
      返回:
      prototypeDisplayValue 属性的值
      自从:
      1.4
      参见:
    • setPrototypeDisplayValue

      @BeanProperty (visualUpdate =true, description ="The display prototype value, used to compute display width and height.") public void setPrototypeDisplayValue(E  prototypeDisplayValue)
      设置用于计算 UI 部分显示大小的原型显示值。

      使用原型显示值配置渲染器并获取其首选大小来计算组合框的首选大小。当组合框将显示大量数据时,指定首选显示值通常很有用。如果未指定原型显示值,则必须为模型中的每个值配置渲染器并获取其首选大小,这可能相对昂贵。

      参数:
      prototypeDisplayValue - 原型显示值
      自从:
      1.4
      参见:
    • addItem

      public void addItem(E  item)
      将项目添加到项目列表。此方法仅在 JComboBox 使用可变数据模型时有效。

      Warning: 如果添加重复的 String 对象,可能会出现焦点和键盘导航问题。解决方法是添加新对象而不是 String 对象,并确保定义了 toString() 方法。例如:

        comboBox.addItem(makeObj("Item 1"));
        comboBox.addItem(makeObj("Item 1"));
        ...
        private Object makeObj(final String item) {
         return new Object() { public String toString() { return item; } };
        }
       
      参数:
      item - 要添加到列表中的项目
      参见:
    • insertItemAt

      public void insertItemAt(E  item, int index)
      将项目插入项目列表中给定索引处。此方法仅在 JComboBox 使用可变数据模型时有效。
      参数:
      item - 要添加到列表中的项目
      index - 一个整数,指定添加项目的位置
      参见:
    • removeItem

      public void removeItem(Object  anObject)
      从项目列表中删除一个项目。此方法仅在 JComboBox 使用可变数据模型时有效。
      参数:
      anObject - 要从项目列表中删除的对象
      参见:
    • removeItemAt

      public void removeItemAt(int anIndex)
      删除位于 anIndex 的项目 此方法仅在 JComboBox 使用可变数据模型时有效。
      参数:
      anIndex - 一个 int,指定要删除的项目的索引,其中 0 表示列表中的第一项
      参见:
    • removeAllItems

      public void removeAllItems()
      从项目列表中删除所有项目。
    • showPopup

      public void showPopup()
      使组合框显示其弹出窗口。
      参见:
    • hidePopup

      public void hidePopup()
      使组合框关闭其弹出窗口。
      参见:
    • setPopupVisible

      public void setPopupVisible(boolean v)
      设置弹出窗口的可见性。
      参数:
      v - 如果 true 显示弹出窗口,否则隐藏弹出窗口。
    • isPopupVisible

      public boolean isPopupVisible()
      确定弹出窗口的可见性。
      返回:
      如果弹出窗口可见,则返回 true,否则返回 false
    • addItemListener

      public void addItemListener(ItemListener  aListener)
      添加一个 ItemListener

      aListener 将在所选项目更改时收到一两个 ItemEvent

      指定者:
      addItemListener 在接口 ItemSelectable
      参数:
      aListener - 要通知的 ItemListener
      参见:
    • removeItemListener

      public void removeItemListener(ItemListener  aListener)
      删除 ItemListener
      指定者:
      removeItemListener 在接口 ItemSelectable
      参数:
      aListener - 要删除的 ItemListener
      参见:
    • getItemListeners

      @BeanProperty (bound =false) public ItemListener [] getItemListeners()
      返回使用 addItemListener() 添加到此 JComboBox 的所有 ItemListener 的数组。
      返回:
      添加所有 ItemListener 或如果未添加任何监听器,则为空数组
      自从:
      1.4
    • addActionListener

      public void addActionListener(ActionListener  l)
      添加一个 ActionListener

      做出选择后,ActionListener 将收到 ActionEvent。如果组合框是可编辑的,那么当编辑停止时将触发 ActionEvent

      参数:
      l - 要通知的 ActionListener
      参见:
    • removeActionListener

      public void removeActionListener(ActionListener  l)
      删除 ActionListener
      参数:
      l - 要删除的 ActionListener
    • getActionListeners

      @BeanProperty (bound =false) public ActionListener [] getActionListeners()
      返回使用 addActionListener() 添加到此 JComboBox 的所有 ActionListener 的数组。
      返回:
      添加所有 ActionListener 或如果未添加任何监听器,则为空数组
      自从:
      1.4
    • addPopupMenuListener

      public void addPopupMenuListener(PopupMenuListener  l)
      添加一个 PopupMenu 监听器,它将监听来自组合框弹出部分的通知消息。

      对于 Java 附带的所有标准外观,组合框的弹出列表部分被实现为 JPopupMenu 。自定义外观可能不会以这种方式实现,因此不会收到通知。

      参数:
      l - 要添加的 PopupMenuListener
      自从:
      1.4
    • removePopupMenuListener

      public void removePopupMenuListener(PopupMenuListener  l)
      删除 PopupMenuListener
      参数:
      l - 要删除的 PopupMenuListener
      自从:
      1.4
      参见:
    • getPopupMenuListeners

      @BeanProperty (bound =false) public PopupMenuListener [] getPopupMenuListeners()
      返回使用 addPopupMenuListener() 添加到此 JComboBox 的所有 PopupMenuListener 的数组。
      返回:
      添加所有 PopupMenuListener 或如果未添加任何监听器,则为空数组
      自从:
      1.4
    • firePopupMenuWillBecomeVisible

      public void firePopupMenuWillBecomeVisible()
      通知 PopupMenuListener 组合框的弹出部分将变为可见。

      此方法是公共的,但不应由 UI 委托以外的任何对象调用。

      自从:
      1.4
      参见:
    • firePopupMenuWillBecomeInvisible

      public void firePopupMenuWillBecomeInvisible()
      通知 PopupMenuListener 组合框的弹出部分已变得不可见。

      此方法是公共的,但不应由 UI 委托以外的任何对象调用。

      自从:
      1.4
      参见:
    • firePopupMenuCanceled

      public void firePopupMenuCanceled()
      通知 PopupMenuListener 组合框的弹出部分已被取消。

      此方法是公共的,但不应由 UI 委托以外的任何对象调用。

      自从:
      1.4
      参见:
    • setActionCommand

      public void setActionCommand(String  aCommand)
      设置应包含在发送给动作监听的事件中的动作命令。
      参数:
      aCommand - 包含发送给动作监听器的“命令”的字符串;同一个监听器可以根据收到的命令做不同的事情
    • getActionCommand

      public String  getActionCommand()
      返回发送给动作监听的事件中包含的动作命令。
      返回:
      包含发送给动作监听的“命令”的字符串。
    • setAction

      @BeanProperty (visualUpdate =true, description ="the Action instance connected with this ActionEvent source") public void setAction(Action  a)
      ActionEvent 源设置 Action。新的 Action 取代了之前设置的任何 Action 但不影响 ActionListeners 独立添加 addActionListener 。如果 Action 已经是 ActionEvent 源的已注册 ActionListener,则不会重新注册。

      设置 Action 会导致立即更改 摇摆组件支持Action 中描述的所有属性。随后,组合框的属性会随着 Action 的属性更改而自动更新。

      此方法使用其他三种方法来设置和帮助跟踪 Action 的属性值。它使用 configurePropertiesFromAction 方法立即更改组合框的属性。为了跟踪 Action 的属性值的变化,此方法注册了 createActionPropertyChangeListener 返回的 PropertyChangeListener。当 Action 中的属性更改时,默认 PropertyChangeListener 调用 actionPropertyChanged 方法。

      参数:
      a - JComboBoxActionnull
      自从:
      1.3
      参见:
    • getAction

      public Action  getAction()
      返回当前为此 ActionEvent 源设置的 Action,如果未设置 Action,则返回 null
      返回:
      这个 ActionEvent 来源的 Action;或者null
      自从:
      1.3
      参见:
    • configurePropertiesFromAction

      protected void configurePropertiesFromAction(Action  a)
      设置此组合框的属性以匹配指定的 Action 中的属性。有关此设置的属性的更多详细信息,请参阅 摇摆组件支持Action
      参数:
      a - 从中获取属性的 Action,或 null
      自从:
      1.3
      参见:
    • createActionPropertyChangeListener

      protected PropertyChangeListener  createActionPropertyChangeListener(Action  a)
      创建并返回一个 PropertyChangeListener 负责监听来自指定 Action 的更改并更新相应的属性。

      警告:如果您将其子类化,则不要创建匿名内部类。如果你这样做,组合框的生命周期将与 Action 的生命周期相关联。

      参数:
      a - 组合框的动作
      返回:
      PropertyChangeListener
      自从:
      1.3
      参见:
    • actionPropertyChanged

      protected void actionPropertyChanged(Action  action, String  propertyName)
      更新组合框的状态以响应关联操作中的属性更改。从 createActionPropertyChangeListener 返回的 PropertyChangeListener 调用此方法。子类通常不需要调用它。支持额外 Action 属性的子类应该覆盖这个和 configurePropertiesFromAction

      有关此方法设置的属性列表,请参阅 摇摆组件支持Action 中的表格。

      参数:
      action - 与此组合框关联的 Action
      propertyName - 更改的属性的名称
      自从:
      1.6
      参见:
    • fireItemStateChanged

      protected void fireItemStateChanged(ItemEvent  e)
      通知所有已注册对此事件类型的通知感兴趣的监听。
      参数:
      e - 感兴趣的事件
      参见:
    • fireActionEvent

      protected void fireActionEvent()
      通知所有已注册对此事件类型的通知感兴趣的监听。
      参见:
    • selectedItemChanged

      protected void selectedItemChanged()
      这个受保护的方法是特定于实现的。不要直接访问或重写。
    • getSelectedObjects

      @BeanProperty (bound =false) public Object [] getSelectedObjects()
      返回包含所选项目的数组。实现此方法是为了与 ItemSelectable 兼容。
      指定者:
      getSelectedObjects 在接口 ItemSelectable
      返回:
      包含一个元素的 Objects 数组——所选项目
    • actionPerformed

      public void actionPerformed(ActionEvent  e)
      此方法作为实现副作用公开。请勿调用或重写。
      指定者:
      actionPerformed 在接口 ActionListener
      参数:
      e - 要处理的事件
    • contentsChanged

      public void contentsChanged(ListDataEvent  e)
      此方法作为实现副作用公开。请勿调用或重写。
      指定者:
      contentsChanged 在接口 ListDataListener
      参数:
      e - 一个ListDataEvent封装了事件信息
    • intervalAdded

      public void intervalAdded(ListDataEvent  e)
      此方法作为实现副作用公开。请勿调用或重写。
      指定者:
      intervalAdded 在接口 ListDataListener
      参数:
      e - 一个ListDataEvent封装了事件信息
    • intervalRemoved

      public void intervalRemoved(ListDataEvent  e)
      此方法作为实现副作用公开。请勿调用或重写。
      指定者:
      intervalRemoved 在接口 ListDataListener
      参数:
      e - 一个ListDataEvent封装了事件信息
    • selectWithKeyChar

      public boolean selectWithKeyChar(char keyChar)
      选择与指定键盘字符对应的列表项,如果存在与该字符对应的项,则返回 true。否则,返回假。
      参数:
      keyChar - 一个字符,通常这是用户键入的键盘键
      返回:
      true 是否有与该字符对应的项目。否则,返回 false
    • setEnabled

      @BeanProperty (preferred =true, description ="The enabled state of the component.") public void setEnabled(boolean b)
      启用组合框以便可以选择项目。当组合框被禁用时,无法选择项目并且无法在其字段中键入值(如果它是可编辑的)。
      重写:
      setEnabled 在类 JComponent
      参数:
      b - 一个boolean,其中 true 启用组件,false 禁用它
      参见:
    • configureEditor

      public void configureEditor(ComboBoxEditor  anEditor, Object  anItem)
      使用指定项初始化编辑器。
      参数:
      anEditor - 在组合框字段中显示列表项并允许编辑的 ComboBoxEditor
      anItem - 在字段中显示和编辑的对象
    • processKeyEvent

      public void processKeyEvent(KeyEvent  e)
      处理 KeyEvent s,寻找 Tab 键。如果找到 Tab 键,则关闭弹出窗口。
      重写:
      processKeyEvent 在类 JComponent
      参数:
      e - 包含按下的键盘键的 KeyEvent
      参见:
    • setKeySelectionManager

      @BeanProperty (bound =false, expert =true, description ="The objects that changes the selection when a key is pressed.") public void setKeySelectionManager(JComboBox.KeySelectionManager  aManager)
      设置将键盘字符转换为列表选择的对象。通常,具有匹配的第一个字符的第一个选择成为所选项目。
      参数:
      aManager - 关键选择经理
    • getKeySelectionManager

      public JComboBox.KeySelectionManager  getKeySelectionManager()
      返回列表的键选择管理器。
      返回:
      目前正在使用的KeySelectionManager
    • getItemCount

      @BeanProperty (bound =false) public int getItemCount()
      返回列表中的项目数。
      返回:
      等于列表中项目数的整数
    • getItemAt

      public E  getItemAt(int index)
      返回指定索引处的列表项。如果 index 超出范围(小于零或大于或等于大小),它将返回 null
      参数:
      index - 表示列表位置的整数,其中第一项从零开始
      返回:
      该列表位置的项目;或 null 如果超出范围
    • createDefaultKeySelectionManager

      protected JComboBox.KeySelectionManager  createDefaultKeySelectionManager()
      返回默认键选择管理器的实例。
      返回:
      列表当前使用的KeySelectionManager
      参见:
    • paramString

      protected String  paramString()
      返回此 JComboBox 的字符串表示形式。此方法仅用于调试目的,返回字符串的内容和格式可能因实现而异。返回的字符串可能为空,但可能不是 null
      重写:
      paramString 在类 JComponent
      返回:
      这个 JComboBox 的字符串表示
    • getAccessibleContext

      @BeanProperty (bound =false) public AccessibleContext  getAccessibleContext()
      获取与此 JComboBox 关联的 AccessibleContext。对于组合框,AccessibleContext 采用 AccessibleJComboBox 的形式。如有必要,将创建一个新的 AccessibleJComboBox 实例。
      指定者:
      getAccessibleContext 在接口 Accessible
      重写:
      getAccessibleContext 在类 Component
      返回:
      作为此 JComboBox 的 AccessibleContext 的 AccessibleJComboBox