2012-11-20 2 views
0

애플릿 소스 코드는 일종의 스파게티 (2000, Java 1.3으로 작성)이며 Java 1.6 또는 1.7로 다시 컴파일하려고합니다.애플릿의 EDT에서 I/O 실행시 문제

테스트 할 때 스윙의 대부분은 정상이지만 때로는 Exception이 발생했습니다. 이것은 EDT 예외입니다. 특히 끌기 이벤트가 완료되면 일련의 EDT 예외가 나타납니다.

ActionListeners의 I/O 부분을 코딩 할 때 이와 비슷한 점이 있습니다. 조치가 수행 될 때 EDT가 실행하는 액션 수신기의 I/O 작업을 코딩하는 것이 좋지 않기 때문입니다.

편집 :

이 되풀이 예외

Exception in thread "AWT-EventQueue-3" java.lang.NullPointerException 
    at javax.swing.BufferStrategyPaintManager.flushAccumulatedRegion(Unknown Source) 
    at javax.swing.BufferStrategyPaintManager.copyArea(Unknown Source) 
    at javax.swing.RepaintManager.copyArea(Unknown Source) 
    at javax.swing.JViewport.blitDoubleBuffered(Unknown Source) 
    at javax.swing.JViewport.windowBlitPaint(Unknown Source) 
    at javax.swing.JViewport.setViewPosition(Unknown Source) 
    at javax.swing.plaf.basic.BasicScrollPaneUI$Handler.vsbStateChanged(Unknown Source) 
    at javax.swing.plaf.basic.BasicScrollPaneUI$Handler.stateChanged(Unknown Source) 
    at javax.swing.DefaultBoundedRangeModel.fireStateChanged(Unknown Source) 
    at javax.swing.DefaultBoundedRangeModel.setRangeProperties(Unknown Source) 
    at javax.swing.DefaultBoundedRangeModel.setValue(Unknown Source) 
    at javax.swing.JScrollBar.setValue(Unknown Source) 
    at javax.swing.plaf.basic.BasicScrollBarUI$TrackListener.setValueFrom(Unknown Source) 
    at javax.swing.plaf.basic.BasicScrollBarUI$TrackListener.mouseDragged(Unknown Source) 
    at java.awt.Component.processMouseMotionEvent(Unknown Source) 
    at javax.swing.JComponent.processMouseMotionEvent(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.Component.dispatchEvent(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.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source) 
    at java.awt.EventQueue$2.run(Unknown Source) 
    at java.awt.EventQueue$2.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) 
+0

UI 코드에 액세스하는 비 EDT 스레드로 인해 발생했을 가능성이 큽니다. UI 코드는 EDT에 의해서만 액세스되어야합니다. IO에 관해서는, EDT는 거의 이것을하지 않아야합니다 - IO 코드에 대해'SwingWorker '를보십시오. – Muel

+0

끌기 동작으로 인해 I/O가 어떻게 발생합니까? '드래그 할 때 표시 할 아이콘'과 같은 것이면 시작시 아이콘이로드되어야합니다. –

+1

예외는 스크롤 막대를 드래깅하거나 드래그 모션을 사용하여 테이블 열의 크기를 조절하여 발생합니다 ... 예외 스택을 추가했습니다 .. – ton

답변

1

나는 그것이 자바 플러그인의 버전을 함께 할 수있는 뭔가가 생각입니다. 자바 1.6_10에서 는,이 플러그인의 새 버전이 릴리스, 난 그냥 제어판 들은 전진> Java 플러그인에서 발견 자바에서 옵션을 해제 ->

에 차세대 자바 플러그인을 사용 나는이를 사용하지 않으면 별개의 동작이없는 반복 오류가 더 이상 나타나지 않습니다.

자바 1.3 시대에 작성된 코드와 관련이 있다고 생각합니다.