JComboBox组件可以让用户在多个选择项中选择其中一个,它有两种形式:不可编辑的和可编辑的。默认的形式是不可编辑的组合框,它的特征是拥有一个按钮和一个选择值的下拉列表。第二种形式,称为可编辑的组合框,它的特征是拥有一个文本框紧挨着一个小的按钮,用户可以在文本框中输入一个值或单击按钮显示下拉列表。
1.不可编辑组合框
下面的代码,创建一个不可编辑的组合框:
String[ ] petName = {“小狗”,”小花猫”,”鹦鹉”,”小兔子”,”小猪”};
JComboBox comboBox = new JComboBox(petName);
comboBox.setSelectedIndex(3);
还可以通过方法addItem(Object item)和insertItemAt(Object item,int index)向组合框中添加选项。例如:
comboBox.addItem(“小鸭子”);
comboBox.insertItemAt(“小白鼠”,4);
要获得用户在组合框中的选择项,可以使用下面两个方法:getItemAt(int)和getSelectedItem()。这两个方法都返回一个Object对象。要从组合框中删除选择项,可以使用下面三个方法:removeAllItems()、removeItemAt(int)和removeItem(Object)。这三个方法都不需要有返回值。想知道组合框中总共有多少个可供选择的项,使用方法getItemCount(),它返回组合框中可供选择项的总数。
【例】使用组合框程序示例。
package chapter14;
import javax.swing.*;
public class ComboBoxDemo {
JComboBox comboBox; //声明组合框对象
JFrame frame; //声明窗体对象
JPanel contentPane; //声明面板对象
JLabel label; //声明标签对象
public ComboBoxDemo () { //不带参数的构造器
frame = new JFrame("ComboBoxDemo "); //创建窗体对象
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置当关闭窗体时,自动退出程序
contentPane = new JPanel(); //创建面板对象
frame.setContentPane(contentPane); //设置内容面板
label = new JLabel(“请选择:”); //创建标签对象
String[ ] petName = {“小狗”,”小花猫”,”鹦鹉”,”小兔子”,”小猪”};
//创建不可编辑组合框.
comboBox = new JComboBox (petName);
comboBox.addItem(“小鸭子”); //为组合框添加内容项目
comboBox.insertItemAt(“小白鼠”,4); //向组合框中插入内容项
comboBox.setSelectedIndex(3); //设置组合框默认选中项为第4项
}
// 创建GUI界面并显示.
public void createAndShowGUI() {
//添加组件.
contentPane.add(label); //向内容面板中添加标签
contentPane.add(comboBox); //向内容面板中添加组合框
//显示窗口.
frame.pack(); //设置窗体组件按首选大小显示
frame.setVisible(true); //将窗体设置为可见(显示窗体)
}
public static void main(String[] args) {
//为事件分发线程预订一个工作:创建并显示本程序的GUI.
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
new ComboBoxDemo ().createAndShowGUI();
}
});
}
}
在这个程序中,创建了一个组合框。默认情况下,该组合框是不可编辑的,读者可以试着尝试修改组合框中的内容。当然,也可以通过调用setEditable(false)方法显式地将组合框设为不可编辑的。2.可编辑组合框
下面的代码,创建一个可编辑组合框:
String[] patternExamples = {
"dd MMMMM yyyy",
"dd.MM.yy",
"MM/dd/yy",
"yyyy.MM.dd G 'at' hh:mm:ss z",
"EEE, MMM d, ''yy",
"h:mm a",
"H:mm:ss:SSS",
"K:mm a,z",
"yyyy.MMMMM.dd GGG hh:mm aaa"
};
. . .
JComboBox patternList = new JComboBox(patternExamples);
patternList.setEditable(true);
注意最后一行,通过方法setEditable(true)方法将组合框设置为可编辑的。其他都简单,与不可编辑组合框类似。在上面的程序中,同样创建了一个组合框,但使用其方法setEditable(true),将其设为可编辑的。可以看出来,在可编辑组合框中,可以输入下拉列表中没有的选项。