Where The Streets Have No Name

IndexOutOfBoundsException with Netbeans Java Desktop Database Application 본문

Developement/Java

IndexOutOfBoundsException with Netbeans Java Desktop Database Application

highheat 2009. 12. 3. 09:42
Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Index: 380, Size: 380
        at java.util.ArrayList.RangeCheck(ArrayList.java:547)
        at java.util.ArrayList.get(ArrayList.java:322)
        at org.jdesktop.swingbinding.impl.ListBindingManager$ColumnDescriptionManager.validateBinding(ListBindingManager.java:191)
        at org.jdesktop.swingbinding.impl.ListBindingManager.valueAt(ListBindingManager.java:99)
        at org.jdesktop.swingbinding.JTableBinding$BindingTableModel.getValueAt(JTableBinding.java:713)
        at javax.swing.JTable.getValueAt(JTable.java:2695)
        at javax.swing.JTable.prepareRenderer(JTable.java:5712)
        at javax.swing.plaf.basic.BasicTableUI.paintCell(BasicTableUI.java:2075)
        at javax.swing.plaf.basic.BasicTableUI.paintCells(BasicTableUI.java:1977)
        at javax.swing.plaf.basic.BasicTableUI.paint(BasicTableUI.java:1773)
        at javax.swing.plaf.ComponentUI.update(ComponentUI.java:143)
        at javax.swing.JComponent.paintComponent(JComponent.java:763)
        at javax.swing.JComponent.paint(JComponent.java:1029)
        at javax.swing.JComponent.paintToOffscreen(JComponent.java:5124)
        at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1475)
        at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1406)
        at javax.swing.RepaintManager.paint(RepaintManager.java:1220)
        at javax.swing.JComponent.paintForceDoubleBuffered(JComponent.java:1065)
        at javax.swing.JViewport.blitDoubleBuffered(JViewport.java:1612)
        at javax.swing.JViewport.windowBlitPaint(JViewport.java:1573)
        at javax.swing.JViewport.setViewPosition(JViewport.java:1118)
        at javax.swing.plaf.basic.BasicScrollPaneUI$Handler.vsbStateChanged(BasicScrollPaneUI.java:1027)
        at javax.swing.plaf.basic.BasicScrollPaneUI$Handler.stateChanged(BasicScrollPaneUI.java:1016)
        at javax.swing.DefaultBoundedRangeModel.fireStateChanged(DefaultBoundedRangeModel.java:348)
        at javax.swing.DefaultBoundedRangeModel.setRangeProperties(DefaultBoundedRangeModel.java:285)
        at javax.swing.DefaultBoundedRangeModel.setValue(DefaultBoundedRangeModel.java:151)
        at javax.swing.JScrollBar.setValue(JScrollBar.java:446)
        at javax.swing.plaf.basic.BasicScrollBarUI$TrackListener.setValueFrom(BasicScrollBarUI.java:1200)
        at javax.swing.plaf.basic.BasicScrollBarUI$TrackListener.mouseDragged(BasicScrollBarUI.java:1162)
        at java.awt.Component.processMouseMotionEvent(Component.java:6311)
        at javax.swing.JComponent.processMouseMotionEvent(JComponent.java:3285)
        at java.awt.Component.processEvent(Component.java:6032)
        at java.awt.Container.processEvent(Container.java:2041)
        at java.awt.Component.dispatchEventImpl(Component.java:4630)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4255)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
        at java.awt.Container.dispatchEventImpl(Container.java:2085)
        at java.awt.Window.dispatchEventImpl(Window.java:2475)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

위와 같은 에러 메세지가 나올경우 binding 과정에서 문제가 있는걸루 검색해보니 결과가 나오네요
참고 링크입니다.
결론적으로 바인딩시 list에 데이터를 담아서 jtable에 바인딩을 하는데 이때 생성하는 list가 문제였습니다.
org.jdesktop.observablecollections.ObservableCollections.observableList(querySearch.getResultList());
이런식으로 생성해야 하는데 querySearch.getResultList()로 처리되어서 refresh버튼을 구현해서 재검색을 하면 위의 에러메세지를 출력해버리죠.
netbeans에서 생성하는 코드에서 위의 부분이 잘못생성 그런것 같네요
wizard에서 basic application으로 생성시 이런 문제가 생기네요 db application으로 생성시에는 문제가 없는걸루 테스트해보니 결과가 나오네오