Ошибки Java Swing и Event? - PullRequest
       48

Ошибки Java Swing и Event?

0 голосов
/ 08 февраля 2012

Я запускаю игровой сервер и получаю эту ошибку. Я еще не очень знаком с Java, поэтому, пожалуйста, помогите мне. У меня есть пара менеджеров событий, чтобы обрабатывать события игроков, такие как резка леса или майнинг, и, возможно, события не останавливаются правильно, я не уверен. Можете ли вы объяснить, что такое очередь событий awt?

Это происходит, когда игровой сервер работает более суток. Вероятно, происходит каждые 12 часов или около того.

[2/8/12 11:00 AM]: Exception in thread "AWT-EventQueue-0" [2/8/12 11:00 AM]: jav
a.lang.ArrayIndexOutOfBoundsException: 14 >= 14
[2/8/12 11:00 AM]:      at java.util.Vector.elementAt(Unknown Source)
[2/8/12 11:00 AM]:      at javax.swing.DefaultListModel.getElementAt(Unknown Sou
rce)
[2/8/12 11:00 AM]:      at javax.swing.plaf.basic.BasicListUI.paintCell(Unknown
Source)
[2/8/12 11:00 AM]:      at javax.swing.plaf.basic.BasicListUI.paintImpl(Unknown
Source)
[2/8/12 11:00 AM]:      at javax.swing.plaf.basic.BasicListUI.paint(Unknown Sour
ce)
[2/8/12 11:00 AM]:   at javax
.swing.plaf.ComponentUI.update(Unknown Source)

[2/8/12 11:00 AM]:      at javax.swing.JComponent.paintComponent(Unknown Source)
[2/8/12 11:00 AM]:      at javax.swing.JComponent.paint(Unknown Source)
[2/8/12 11:00 AM]:      at javax.swing.JComponent.paintChildren(Unknown Source)
[2/8/12 11:00 AM]:      at javax.swing.JComponent.paint(Unknown Source)
[2/8/12 11:00 AM]:      at javax.swing.JViewport.paint(Unknown Source)
[2/8/12 11:00 AM]:      at javax.swing.JComponent.paintChildren(Unknown Source)
[2/8/12 11:00 AM]:      at javax.swing.JComponent.paint(Unknown Source)
[2/8/12 11:00 AM]:      at javax.swing.JComponent.paintToOffscreen(Unknown Sourc
e)
[2/8/12 11:00 AM]:      at javax.swing.BufferStrategyPaintManager.paint(Unknown
Source)
[2/8/12 11:00 AM]:      at javax.swing.RepaintManager.paint(Unknown Source)
[2/8/12 11:00 AM]:      at javax.swing.JComponent._paintImmediately(Unknown Sour
ce)
[2/8/12 11:00 AM]:      at javax.swing.JComponent.paintImmediately(Unknown Sourc
e)
[2/8/12 11:00 AM]:      at javax.swing.RepaintManager.paintDirtyRegions(Unknown
Source)
[2/8/12 11:00 AM]:      at javax.swing.RepaintManager.paintDirtyRegions(Unknown
Source)
[2/8/12 11:00 AM]:     at javax
.swing.RepaintManager.prePaintDirtyRegions(Unknown Source)

[2/8/12 11:00 AM]:      at javax.swing.RepaintManager.access$700(Unknown Source)

[2/8/12 11:00 AM]:      at javax.swing.RepaintManager$ProcessingRunnable.run(Unk
nown Source)
[2/8/12 11:00 AM]:      at java.awt.event.InvocationEvent.dispatch(Unknown Sourc
e)[2/8/12 11:00 AM]: Npc deleted

[2/8/12 11:00 AM]:      at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
[2/8/12 11:00 AM]: Npc deleted

[2/8/12 11:00 AM]:      at java.awt.EventQueue.access$000(Unknown Source)[2/8/12
 11:00 AM]: Npc deleted

[2/8/12 11:00 AM]:      at java.awt.EventQueue$3.run(Unknown Source)[2/8/12 11:0
0 AM]: Npc deleted

[2/8/12 11:00 AM]:      at java.awt.EventQueue$3.run(Unknown Source)
[2/8/12 11:00 AM]: Npc deleted[2/8/12 11:00 AM]:        at java.security.AccessC
ontroller.doPrivileged(Native Method)

[2/8/12 11:00 AM]:      at java.security.ProtectionDomain$1.doIntersectionPrivil
ege(Unknown Source)
[2/8/12 11:00 AM]:
at java.awt.EventQueue.dispatchEvent(Unknown Source)

[2/8/12 11:00 AM]:      at java.awt.EventDispatchThread.pumpOneEventForFilters(U
nknown Source)
[2/8/12 11:00 AM]:      at java.awt.EventDispatchThread.pumpEventsForFilter(Unkn
own Source)
[2/8/12 11:00 AM]:      at java.awt.EventDispatchThread.pumpEventsForHierarchy(U
nknown Source)
[2/8/12 11:00 AM]:      at java.awt.EventDispatchThread.pumpEvents(Unknown Sourc
e)
[2/8/12 11:00 AM]:      at java.awt.EventDispatchThread.pumpEvents(Unknown Sourc
e)
[2/8/12 11:00 AM]:      at java.awt.EventDispatchThread.run(Unknown Source)

Ответы [ 2 ]

2 голосов
/ 09 февраля 2012

Я предполагаю, что вы обновляете состояние компонента вне потока отправки событий, что может случайным образом вызывать проблемы.

Возможно Параллелизм в Swing поможет.

1 голос
/ 08 февраля 2012

Относительно очереди событий : если у вас есть приложение, использующее графический интерфейс пользователя (GUI), с этим GUI также связан поток . Поток запускает цикл ожидания таких событий, как щелчки мыши и так далее. Этот поток также является единственным, который должен обновлять элементы управления в графическом интерфейсе , если что-то нужно изменить (например, список обновляется с большим количеством данных).

Поток GUI управляет изменениями из так называемой очереди событий . Другие потоки, которым необходимо обновить графический интерфейс, должны пересылать свои обновления в поток графического интерфейса , процесс, с помощью которого они добавляются в очередь событий, поскольку на самом деле их может применять только поток графического интерфейса.

Подробнее об этом читайте здесь: http://www.kauss.org/Stephan/swing/index.html

...