//声明组件
Strings[] = { "座票", "卧铺" };
JComboBoxcb_ticketType = newJComboBox(s);
//设置监听
cb_ticketType.addItemListener(new myItemListener());
//实现方法
public class myItemListener implements ItemListener {
// 在JComboBox的监听事件时总是执行两次,原因如下:
// ItemListener类中的方法itemStateChanged()事件的itemState有关,itemState在这里的状态有两个,Selected
// 和 deSelected(即选中和未被选中)
// 所以,当改变下拉列表中被选中的项的时候,其实是触发了两次事件:
// 第一次是上次被选中的项的 State 由 Selected 变为 deSelected ,即取消选择
// 第二次是本次被选中的项的 State 由 deSelected 变为 Selected ,即新选中,所以,必然的
// ItemStateChanged 事件中的代码要被执行两次了。
// 加上最外面的if语句,就可以解决这个问题。
public voiditemStateChanged(ItemEvent e) {
// TODO Auto-generated method stub
TableModeltm = Main.tab_showTicket.getModel();
// Object value = tm.getValueAt(row, col);
final int row = Main.tab_showTicket.getEditingRow();
if (e.getStateChange() ==ItemEvent.SELECTED){
if (e.getSource() == cb_ticketType) {
int index = cb_ticketType.getSelectedIndex();
if (index == 0) {
ta_ticketPrice.setText((String)tm.getValueAt(row, 5));
}else{
ta_ticketPrice.setText((String)tm.getValueAt(row, 6));
}
}
}
}
}