2012-05-05 2 views
-1

이렇게 나는 모호한 오류가 발생하며 그 의미가 무엇인지 알 수 없습니다. 내 코드를 보지 않고 누군가이 오류의 원인과이 오류의 가능한 해결책을 알려 줄 수 있습니까? 어떤 도움이라도 대단히 감사하겠습니다. 여기 "AWT-EventQueue-0"스레드의 예외 java.lang.ArrayIndexOutOfBoundsException : 해당 자식 없음 : 15

오류입니다 :

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: No such child: 15 
    at java.awt.Container.getComponent(Unknown Source) 
    at javax.swing.JComponent.rectangleIsObscured(Unknown Source) 
    at javax.swing.JComponent.paint(Unknown Source) 
    at javax.swing.JComponent.paintToOffscreen(Unknown Source) 
    at javax.swing.BufferStrategyPaintManager.paint(Unknown Source) 
    at javax.swing.RepaintManager.paint(Unknown Source) 
    at javax.swing.JComponent._paintImmediately(Unknown Source) 
    at javax.swing.JComponent.paintImmediately(Unknown Source) 
    at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source) 
    at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source) 
    at javax.swing.RepaintManager.prePaintDirtyRegions(Unknown Source) 
    at javax.swing.RepaintManager.access$700(Unknown Source) 
    at javax.swing.RepaintManager$ProcessingRunnable.run(Unknown Source) 
    at java.awt.event.InvocationEvent.dispatch(Unknown Source) 
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source) 
    at java.awt.EventQueue.access$000(Unknown Source) 
    at java.awt.EventQueue$1.run(Unknown Source) 
    at java.awt.EventQueue$1.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.AccessControlContext$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) 
+1

"내 코드를 보지 않고"표시되는 이유는 무엇입니까? 코드에 포함 된 상태 비밀은 무엇입니까? –

+1

귀하의 코드가 영업 비밀 인 경우, 제 답변도 1이 될 것 같습니다. –

+0

Lol, 코드를 표시하지 않는 이유는 일종의 개인 정보이기 때문에 다양한 정보가 표시되어 대중에게 공개하기가 쉽지 않기 때문입니다. 이 코드는 "비밀"도 아니며 유해한 것으로 간주 될 수있는 것도하지 않습니다. 이 게임은 제가 잠시 동안 해왔 던 게임이며이 오류의 원인과 가능한 해결책에 궁금합니다. –

답변

1

당신이 코드를 보지 않고 구성 요소

+0

그것은 튜토리얼에 대한 링크가 아니라 SwingWorker API에 대한 링크입니다. –

+0

whoops..wrong link :) ... 글쎄, 구글에서 처음으로 어떤 결과를 얻었습니까? –

2

worker thread tutorial 을 제어하기 위해 스윙을 사용 작업자 스레드를 사용하여, 또는 우리가 기본적으로 단지 추측 할 수있는 문제를 설명 어떤 SSCCE하는 경우 무슨 일 이니? 내 생각에 다른 스윙 구성 요소를 다른 Thread에 붙들고, ArrayIndexOutOfBoundsException은 잘못된 스레드에서 구성 요소를 제거한 결과입니다.

디버깅하려면 CheckThreadViolationRepaintManager을 사용하여 시작하고 오류를 수정하십시오. 이것이 작동하지 않으면 어떤 컨테이너가 오류를 일으키는 지 확인하고 예외를 일으키는 구성 요소를 누가 제거했는지 확인하기 위해 추가 및 제거 메소드에 중단 점을 넣으려고합니다 (아마도 잘못된 것일 수 있음) ArrayIndexOutOfBoundsException에 대한 중단 점을 넣으려고합니다 스레드는 EventQueue.isDispatchThread() 메서드로 쉽게 확인할 수 있습니다.

+1

오, 알았어요. 기본적으로 저는 JPanel을 가지고 있으며 JProgressBars를 계속 추가하고 있습니다. 앞서 말했듯이, 이것은 게임이고 진도 표시 줄은 적의 헬스 바에 대한 것이므로 헬스 바가 0이 될 때마다 jpanel에서 제거합니다. 더 이상 필요가 없기 때문에 japanel에서 제거합니다. 이 오류에 대한 가능한 해결책을 아시겠지만 –

+1

@ JoshM 실제로 스레딩 문제인 경우 모든 스윙 구성 요소와 마찬가지로 이벤트 발송 스레드에서 구성 요소를 제거해야합니다 (모든 스윙 구성 요소와 마찬가지로 [Swing 동시성 튜토리얼] (EDT에 대한 자세한 내용은 http://docs.oracle.com/javase/tutorial/uiswing/concurrency/) – Robin

+1

Uhmm, Event Dispatch Thread의 구성 요소를 제거하면 무엇을 의미합니까? 예를 들어 주시겠습니까? –

관련 문제