简介
当修改下拉菜单中的选中项时,将发出选项事件。ItemEvent类负责捕获选项事件,可以通过为组件添加实现了ItemListener接口的监听器类来处理相应的选项事件。
ItemListener接口只有一个抽象方法,在修改一次下拉菜单选中项的过程中,该方法将被触发两次,一次是由取消原来选中项的选中状态触发的,另一次是由选中新选项触发的。
注意:选中项未发生变化时并不会触发选项事件,例如:将选中项由“选项1”改为“选项1”时并不会触发选项事件。
ItemListener接口的具体定义如下所示:
public interface ItemListener extends EventListener {
void itemStateChanged(ItemEvent e);
}
常用方法
getItem():用来获得触发此次事件的选项,该方法的返回值为 Object 型。
getStateChange():用来获得此次事件的类型,即是由取消原来选中项的选中状态触发的,还是由选中新选项触发的,该方法的返回值为 int 型,可以通过 ItemEvent 类中如下静态常量判断此次事件的具体类型:
SELECTED:代表此次事件是由选中 新选项触发的。
DESELECTED:代表此次事件是由取消原来选中项的选中状态触发的。
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
public class t3 extends JFrame{
private static final long serialVersionUID = 1L;
public t3() {
setTitle("Hern");
setBounds(400, 400, 400, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
FlowLayout flowLayout = new FlowLayout();
setLayout(flowLayout);//设置布局
JComboBox<String> comboBox = new JComboBox<>();// 创建一个下拉菜单
comboBox.setPreferredSize(new Dimension(100, 20));//设置下拉菜单的宽度、高度
for (int i = 1; i < 6; i++) {// 通过循环添加选项
comboBox.addItem("选项" + i);
}
comboBox.addItemListener(new ItemListener() {// 添加选项事件监听器
public void itemStateChanged(ItemEvent e) {
int stateChange = e.getStateChange();// 获得事件类型
String item = e.getItem().toString();// 获得触发此次事件的选项
if (stateChange == ItemEvent.SELECTED) {// 查看是否由选中选项触发
System.out.println("此次事件由 选中 选项“" + item + "”触发!");
// 查看是否由取消选中选项触发
} else if (stateChange == ItemEvent.DESELECTED) {
System.out.println("此次事件由 取消选中 选项“" + item + "”触发!");
} else {// 由其他原因触发
System.out.println("此次事件由其他原因触发!");
}
}
});
add(comboBox);
setVisible(true);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
t3 test = new t3();
}
}