У меня проблема с JList, и мне нужна ваша помощь! Я застрял в течение дня.Java JList не отвечает правильно после добавления нового элемента
Это мой JList:
DefaultListModel lm = new DefaultListModel<>(); // add "a", "b", "c" to lm ... list = new JList(lm);
Мой первоначальный JList:
|a| |b| |c|
Если пользователь дважды щелкает все детали, я буду создавать новый пункт "d" и добавьте его в JList и обновите дисплей JList
list.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { if (evt.getClickCount() == 1) { lm.add(..., ...); list = new JList(lm); }
Теперь у меня есть свой обновленный JList:
|a| |b| |c| |d|
Проблема заключается в том: теперь, когда я дважды щелкните любой элемент а, Ь, с, или г, чтобы добавить новый элемент (например, , добавьте «e» в конец JList), ничего не происходит. Мой JList больше не отвечает.
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: -1 at java.util.ArrayList.elementData(Unknown Source) at java.util.ArrayList.get(Unknown Source) at mainprocess.Main$4.valueChanged(Main.java:376) at javax.swing.JList.fireSelectionValueChanged(Unknown Source) at javax.swing.JList$ListSelectionHandler.valueChanged(Unknown Source) at javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source) at javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source) at javax.swing.DefaultListSelectionModel.setValueIsAdjusting(Unknown Source) at javax.swing.JList.setValueIsAdjusting(Unknown Source) at javax.swing.plaf.basic.BasicListUI$Handler.mouseReleased(Unknown Source) at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source) at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEventImpl(Unknown Source) at java.awt.EventQueue.access$500(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue$4.run(Unknown Source) at java.awt.EventQueue$4.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException
Может кто-нибудь помочь?
Я не могу представить, что это закончится хорошо, когда вы восстановите все значение 'list' while * внутри события *, прикрепленного к этому списку. Есть ли способ изменить элементы, содержащиеся в списке, не переделав новый 'JList'? – mellamokb