java - 删除 `ItemListener` 会引发 `ArrayIndexOutOfBounds`

标签 java swing jcombobox indexoutofboundsexception itemlistener

我正在尝试从我的一个 JComboBoxes 中删除项目监听器。下面是代码。

clientNameCombo.removeItemListener(clientNameCombo.getItemListeners()[clientNameCombo.getItemListeners().length-1]);

我将 ItemListener 动态添加到上面的组合框。但是,有时上述代码运行时会出现错误:

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: -1
    at UI.MainUIHolder$CoreClientOtherPaymentTypeComboAction.itemStateChanged(MainUIHolder.java:10031)
    at javax.swing.JComboBox.fireItemStateChanged(JComboBox.java:1223)
    at javax.swing.JComboBox.selectedItemChanged(JComboBox.java:1280)
    at javax.swing.JComboBox.contentsChanged(JComboBox.java:1329)
    at javax.swing.AbstractListModel.fireContentsChanged(AbstractListModel.java:118)
    at javax.swing.DefaultComboBoxModel.setSelectedItem(DefaultComboBoxModel.java:93)
    at javax.swing.JComboBox.setSelectedItem(JComboBox.java:576)
    at javax.swing.JComboBox.setSelectedIndex(JComboBox.java:622)
    at javax.swing.plaf.basic.BasicComboPopup$Handler.mouseReleased(BasicComboPopup.java:834)
    at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:290)
    at java.awt.Component.processMouseEvent(Component.java:6525)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
    at javax.swing.plaf.basic.BasicComboPopup$1.processMouseEvent(BasicComboPopup.java:498)
    at java.awt.Component.processEvent(Component.java:6290)
    at java.awt.Container.processEvent(Container.java:2234)
    at java.awt.Component.dispatchEventImpl(Component.java:4881)
    at java.awt.Container.dispatchEventImpl(Container.java:2292)
    at java.awt.Component.dispatchEvent(Component.java:4703)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462)
    at java.awt.Container.dispatchEventImpl(Container.java:2278)
    at java.awt.Window.dispatchEventImpl(Window.java:2739)
    at java.awt.Component.dispatchEvent(Component.java:4703)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:746)
    at java.awt.EventQueue.access$400(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:697)
    at java.awt.EventQueue$3.run(EventQueue.java:691)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.awt.EventQueue$4.run(EventQueue.java:719)
    at java.awt.EventQueue$4.run(EventQueue.java:717)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:716)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

也许我必须检查ItemListener是否附加到JComboBox

最佳答案

clientNameCombo.getItemListeners().length == 0(即数组为空)时,您的代码尝试访问-1索引,这总是错误的.

关于java - 删除 `ItemListener` 会引发 `ArrayIndexOutOfBounds`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27104715/

相关文章:

java - UnmarshallingFailureException : JAXB unmarshalling exception; nested exception is javax. xml.bind.UnmarshalException

java - 如何将 Hibernate NamingStrategy 迁移到(隐式|物理)NamingStrategy?文档在哪里?

java - 如何使用匿名类从 Jcombobox 数组中获取值

java - JDialog标题的字体大小

java - 用java中的sql查询更新5个组合框

java - 从 JComboBox 显示 JTable

JAVA:是否可以在循环外使用已在循环内初始化的变量?

java - 使用 Twilio 进行 Spring MVC Controller 重定向

java - 单击 JFrame 内的 JPanel

java - 在 Java 中的 JTable 中添加 JCombobox 时出现问题?