JComboBox运用中一个奇怪的异常
在调用JComboBox的removeAllItems()方法时,总是抛出ArrayIndexOutOfBoundsException,百思不得其解,即使把调用语句放进try中也捕捉不到错误,进行getItemCount()判断也无功而返。
在调用JComboBox的removeAllItems()方法时,总是抛出ArrayIndexOutOfBoundsException,百思不得其解,即使把调用语句放进try中也捕捉不到错误,进行getItemCount()判断也无功而返。后来终于在在杰地瓜的帮助下,知道了原来是ActionListener的原因,原文摘录如下:
当使用JComboBox.removeAllItems()或者JComboBox.removeItemAt()之类的方法时你可能会遇到抛出一个超出数组范围的异常!这是为什么呢?很可能是因为你在使用removeAllItems()方法之前没用把JComboBox的ActionListener移除!!这样的话在ActionListener中定义的getSelectedItem()方法可能会找不到对象 抛出这个异常,所以在removeItems前记得要先把包含了getSelectedItem的ActionListener或其他类先移除了~以上仍是个人推测,不过应该正确。如果有朋友遇到这个问题 不妨试试这个办法。
按照这个办法,在调用removeAllItems()方法之前,先移除ActionListener,操作了removeAllItems之后,再把ActionListener添加回来,这样就再也不会抛出异常了。这是不是JComboBox设计上的一个Bug呢?
我来说两句
1 楼 王益欢 发表于 2006-8-1 From IP: 210.22.21.130
神经子
我升天了
不是因为得道
而是因为龙卷风
旋转着飞上天
颠来倒去
长出思想
取得三字法号
俯瞰人世
这就像做了一场梦
过后又赤条条
回到人世间
开始一场更长的梦
作者主页: