您现在的位置:龙卷风首页 ›› 网络编程 ›› 阅读文章

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
神经子 我升天了 不是因为得道 而是因为龙卷风 旋转着飞上天 颠来倒去 长出思想 取得三字法号 俯瞰人世 这就像做了一场梦 过后又赤条条 回到人世间 开始一场更长的梦
作者主页: 
内容/Content