JList和ComboBox很相似,因為這兩個組件都顯示一個項列表。因此,它們都有擴展ListModel接口的模型。而且,這兩個組件都有繪制器,這些繪制器通過實現ListCellBenderer接口來繪制列表單元。 但是,列表和組合框在施工方面還是有差別的。列表單是不可編輯的,但是組合框可以配備一個編輯器。JComboBox組件把編輯工作交給實現ComboBoxEdit接口的一個對象來處理。
列表支持三個選取模式,并把選取工作實現ListSelectionModel接口的一個對象來處理。組合框在一個時刻只有一個可選取的項,而且選取工作由組合框模型來處理。另一方面,組合框支持鍵選取,即在某項上按下一下鍵就可以選取這個項,但列表不能這樣做。
構造函數
JComboBox()
創建具有默認數據模型的 JComboBox。
JComboBox(ComboBoxModel aModel)
創建一個 JComboBox,其項取自現有的 ComboBoxModel 中。
JComboBox(Object[] items)
創建包含指定數組中的元素的 JComboBox。
JComboBox(Vector<?> items)
創建包含指定 Vector 中的元素的 JComboBox。
常用方法
addActionListener(ActionListener l)
添加 ActionListener。
addItem(Object anObject)
為項列表添加項。
addItemListener(ItemListener aListener)
添加 ItemListener。
configureEditor(ComboBoxEditor anEditor, Object anItem)
利用指定項初始化編輯器。
getEditor()
返回用于繪制和編輯 JComboBox 字段中所選項的編輯器。
getItemAt(int index)
返回指定索引處的列表項。
getItemCount()
返回列表中的項數。
getModel()
返回 JComboBox 當前使用的數據模型。
getRenderer()
返回用于顯示 JComboBox 字段中所選項的渲染器。
getSelectedIndex()
返回列表中與給定項匹配的第一個選項。
getSelectedItem()
返回當前所選項。
insertItemAt(Object anObject, int index)
在項列表中的給定索引處插入項。
isEditable()
如果 JComboBox 可編輯,則返回 true。
removeAllItems()
從項列表中移除所有項。
removeItem(Object anObject)
從項列表中移除項。
removeItemAt(int anIndex)
移除 anIndex 處的項。
setModel(ComboBoxModel aModel)
設置 JComboBox 用于獲取項列表的數據模型。
setRenderer(ListCellRenderer aRenderer)
設置渲染器,該渲染器用于繪制列表項和從 JComboBox 字段的列表中選擇的項。
setSelectedIndex(int anIndex)
選擇索引 anIndex 處的項。
setSelectedItem(Object anObject)
將組合框顯示區域中所選項設置為參數中的對象。
下面是一個例子: String[] schoolage = { "本科", "碩士", "博士" }; schoolageComboBox = new JComboBox(schoolage); schoolageComboBox.addItem("其他"); schoolageComboBox.insertItemAt("請選擇", 0); schoolageComboBox.setSelectedIndex(0); schoolageComboBox.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { if (e.getStateChange() == ItemEvent.SELECTED) { // 查看是否為新選中的選項觸發 if (e.getItem().equals("其他") || e.getItem().equals("")) { // 查看觸發的選項 schoolageComboBox.setEditable(true); // 設置選擇框為可編輯 schoolageComboBox.setSelectedItem(""); // 將選項值修改為0字節 } else { schoolageComboBox.setEditable(false); // 設置選擇框為不可編輯
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。