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으로 생성시에는 문제가 없는걸루 테스트해보니 결과가 나오네오