我已经设置了一个JTable并使它包含 18 列。最初,当它是 13 根柱子时,它很好地融入了其中JTable并且没有撕裂。但是,一旦我让它包含 18 个表,并将 autoresize 设置为关闭,当我使用水平滚动条尝试滚动其他列时,JTable开始发生撕裂,如下图所示:
Netbeans 也开始给我很多这样的错误消息:
线程“AWT-EventQueue-0”中的异常 java.lang.ArrayIndexOutOfBoundsException:14
在 javax.swing.JTable$1.getValueAt(JTable.java:689)
在 javax.swing.JTable.getValueAt(JTable.java:2720)
在 javax.swing.JTable.prepareRenderer(JTable.java:5718)
在 javax.swing.plaf.synth.SynthTableUI.paintCell(SynthTableUI.java:684)
在 javax.swing.plaf.synth.SynthTableUI.paintCells(SynthTableUI.java:581)
在 javax.swing.plaf.synth.SynthTableUI.paint(SynthTableUI.java:365)
在 javax.swing.plaf.synth.SynthTableUI.update(SynthTableUI.java:276)
在 javax.swing.JComponent.paintComponent(JComponent.java:778)
在 javax.swing.JComponent.paint(JComponent.java:1054)
在 javax.swing.JComponent.paintToOffscreen(JComponent.java:5221)
在 javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1482)
在 javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1413)
在 javax.swing.RepaintManager.paint(RepaintManager.java:1206)
在 javax.swing.JComponent.paintForceDoubleBuffered(JComponent.java:1090)
在 javax.swing.JViewport.blitDoubleBuffered(JViewport.java:1598)
在 javax.swing.JViewport.windowBlitPaint(JViewport.java:1559)
在 javax.swing.JViewport.setViewPosition(JViewport.java:1102)
在 javax.swing.plaf.basic.BasicScrollPaneUI$Handler.hsbStateChanged(BasicScrollPaneUI.java:1087)
在 javax.swing.plaf.basic.BasicScrollPaneUI$Handler.stateChanged(BasicScrollPaneUI.java:1038)
在 javax.swing.DefaultBoundedRangeModel.fireStateChanged(DefaultBoundedRangeModel.java:364)
在 javax.swing.DefaultBoundedRangeModel.setRangeProperties(DefaultBoundedRangeModel.java:302)
在 javax.swing.DefaultBoundedRangeModel.setValue(DefaultBoundedRangeModel.java:168)
在 javax.swing.JScrollBar.setValue(JScrollBar.java:463)
在 javax.swing.plaf.basic.BasicScrollBarUI$TrackListener.setValueFrom(BasicScrollBarUI.java:1253)
在 javax.swing.plaf.basic.BasicScrollBarUI$TrackListener.mouseDragged(BasicScrollBarUI.java:1195)
在 java.awt.Component.processMouseMotionEvent(Component.java:6553)
在 javax.swing.JComponent.processMouseMotionEvent(JComponent.java:3339)
在 java.awt.Component.processEvent(Component.java:6274)
在 java.awt.Container.processEvent(Container.java:2229)
在 java.awt.Component.dispatchEventImpl(Component.java:4861)
在 java.awt.Container.dispatchEventImpl(Container.java:2287)
在 java.awt.Component.dispatchEvent(Component.java:4687)
在 java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
在 java.awt.LightweightDispatcher.processMouseEvent(Container.java:4509)
在 java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
在 java.awt.Container.dispatchEventImpl(Container.java:2273)
在 java.awt.Window.dispatchEventImpl(Window.java:2719)
在 java.awt.Component.dispatchEvent(Component.java:4687)
在 java.awt.EventQueue.dispatchEventImpl(EventQueue.java:703)
在 java.awt.EventQueue.access$000(EventQueue.java:102)
在 java.awt.EventQueue$3.run(EventQueue.java:662)
在 java.awt.EventQueue$3.run(EventQueue.java:660)
在 java.security.AccessController.doPrivileged(本机方法)
在 java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
在 java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
在 java.awt.EventQueue$4.run(EventQueue.java:676)
在 java.awt.EventQueue$4.run(EventQueue.java:674)
在 java.security.AccessController.doPrivileged(本机方法)
在 java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
在 java.awt.EventQueue.dispatchEvent(EventQueue.java:673)
在 java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244)
在 java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)
在 java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
在 java.awt.EventDispatchThread.run(EventDispatchThread.java:97)
线程“AWT-EventQueue-0”中的异常 java.lang.ArrayIndexOutOfBoundsException:14
在 javax.swing.JTable$1.getValueAt(JTable.java:689)
在 javax.swing.JTable.getValueAt(JTable.java:2720)
在 javax.swing.JTable.prepareRenderer(JTable.java:5718)
在 javax.swing.plaf.synth.SynthTableUI.paintCell(SynthTableUI.java:684)
在 javax.swing.plaf.synth.SynthTableUI.paintCells(SynthTableUI.java:581)
在 javax.swing.plaf.synth.SynthTableUI.paint(SynthTableUI.java:365)
在 javax.swing.plaf.synth.SynthTableUI.update(SynthTableUI.java:276)
在 javax.swing.JComponent.paintComponent(JComponent.java:778)
在 javax.swing.JComponent.paint(JComponent.java:1054)
在 javax.swing.JComponent.paintChildren(JComponent.java:887)
在 javax.swing.JComponent.paint(JComponent.java:1063)
在 javax.swing.JViewport.paint(JViewport.java:731)
在 javax.swing.JComponent.paintChildren(JComponent.java:887)
在 javax.swing.JComponent.paint(JComponent.java:1063)
在 javax.swing.JComponent.paintChildren(JComponent.java:887)
在 javax.swing.JComponent.paint(JComponent.java:1063)
在 javax.swing.JComponent.paintToOffscreen(JComponent.java:5221)
在 javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1482)
在 javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1413)
在 javax.swing.RepaintManager.paint(RepaintManager.java:1206)
在 javax.swing.JComponent._paintImmediately(JComponent.java:5169)
在 javax.swing.JComponent.paintImmediately(JComponent.java:4980)
在 javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:770)
在 javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:728)
在 javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:677)
在 javax.swing.RepaintManager.access$700(RepaintManager.java:59)
在 javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1621)
在 java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
在 java.awt.EventQueue.dispatchEventImpl(EventQueue.java:701)
在 java.awt.EventQueue.access$000(EventQueue.java:102)
在 java.awt.EventQueue$3.run(EventQueue.java:662)
在 java.awt.EventQueue$3.run(EventQueue.java:660)
在 java.security.AccessController.doPrivileged(本机方法)
在 java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
在 java.awt.EventQueue.dispatchEvent(EventQueue.java:671)
在 java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244)
在 java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)
在 java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
在 java.awt.EventDispatchThread.run(EventDispatchThread.java:97)
线程“AWT-EventQueue-0”中的异常 java.lang.ArrayIndexOutOfBoundsException:14
在 javax.swing.JTable$1.getValueAt(JTable.java:689)
在 javax.swing.JTable.getValueAt(JTable.java:2720)
在 javax.swing.JTable.prepareRenderer(JTable.java:5718)
在 javax.swing.plaf.synth.SynthTableUI.paintCell(SynthTableUI.java:684)
在 javax.swing.plaf.synth.SynthTableUI.paintCells(SynthTableUI.java:581)
在 javax.swing.plaf.synth.SynthTableUI.paint(SynthTableUI.java:365)
在 javax.swing.plaf.synth.SynthTableUI.update(SynthTableUI.java:276)
在 javax.swing.JComponent.paintComponent(JComponent.java:778)
在 javax.swing.JComponent.paint(JComponent.java:1054)
在 javax.swing.JComponent.paintToOffscreen(JComponent.java:5221)
在 javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1482)
在 javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1413)
在 javax.swing.RepaintManager.paint(RepaintManager.java:1206)
在 javax.swing.JComponent.paintForceDoubleBuffered(JComponent.java:1090)
在 javax.swing.JViewport.blitDoubleBuffered(JViewport.java:1598)
在 javax.swing.JViewport.windowBlitPaint(JViewport.java:1559)
在 javax.swing.JViewport.setViewPosition(JViewport.java:1102)
在 javax.swing.plaf.basic.BasicScrollPaneUI$Handler.hsbStateChanged(BasicScrollPaneUI.java:1087)
在 javax.swing.plaf.basic.BasicScrollPaneUI$Handler.stateChanged(BasicScrollPaneUI.java:1038)
在 javax.swing.DefaultBoundedRangeModel.fireStateChanged(DefaultBoundedRangeModel.java:364)
在 javax.swing.DefaultBoundedRangeModel.setRangeProperties(DefaultBoundedRangeModel.java:302)
在 javax.swing.DefaultBoundedRangeModel.setValue(DefaultBoundedRangeModel.java:168)
在 javax.swing.JScrollBar.setValue(JScrollBar.java:463)
在 javax.swing.plaf.basic.BasicScrollBarUI$TrackListener.setValueFrom(BasicScrollBarUI.java:1253)
在 javax.swing.plaf.basic.BasicScrollBarUI$TrackListener.mouseDragged(BasicScrollBarUI.java:1195)
在 java.awt.Component.processMouseMotionEvent(Component.java:6553)
在 javax.swing.JComponent.processMouseMotionEvent(JComponent.java:3339)
在 java.awt.Component.processEvent(Component.java:6274)
在 java.awt.Container.processEvent(Container.java:2229)
在 java.awt.Component.dispatchEventImpl(Component.java:4861)
在 java.awt.Container.dispatchEventImpl(Container.java:2287)
在 java.awt.Component.dispatchEvent(Component.java:4687)
在 java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
在 java.awt.LightweightDispatcher.processMouseEvent(Container.java:4509)
在 java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
在 java.awt.Container.dispatchEventImpl(Container.java:2273)
在 java.awt.Window.dispatchEventImpl(Window.java:2719)
在 java.awt.Component.dispatchEvent(Component.java:4687)
在 java.awt.EventQueue.dispatchEventImpl(EventQueue.java:703)
在 java.awt.EventQueue.access$000(EventQueue.java:102)
在 java.awt.EventQueue$3.run(EventQueue.java:662)
在 java.awt.EventQueue$3.run(EventQueue.java:660)
在 java.security.AccessController.doPrivileged(本机方法)
在 java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
在 java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
在 java.awt.EventQueue$4.run(EventQueue.java:676)
在 java.awt.EventQueue$4.run(EventQueue.java:674)
在 java.security.AccessController.doPrivileged(本机方法)
在 java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
在 java.awt.EventQueue.dispatchEvent(EventQueue.java:673)
在 java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244)
在 java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)
在 java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
在 java.awt.EventDispatchThread.run(EventDispatchThread.java:97)
线程“AWT-EventQueue-0”中的异常 java.lang.ArrayIndexOutOfBoundsException:14
在 javax.swing.JTable$1.getValueAt(JTable.java:689)
在 javax.swing.JTable.getValueAt(JTable.java:2720)
在 javax.swing.JTable.prepareRenderer(JTable.java:5718)
在 javax.swing.plaf.synth.SynthTableUI.paintCell(SynthTableUI.java:684)
在 javax.swing.plaf.synth.SynthTableUI.paintCells(SynthTableUI.java:581)
在 javax.swing.plaf.synth.SynthTableUI.paint(SynthTableUI.java:365)
在 javax.swing.plaf.synth.SynthTableUI.update(SynthTableUI.java:276)
在 javax.swing.JComponent.paintComponent(JComponent.java:778)
在 javax.swing.JComponent.paint(JComponent.java:1054)
在 javax.swing.JComponent.paintChildren(JComponent.java:887)
在 javax.swing.JComponent.paint(JComponent.java:1063)
在 javax.swing.JViewport.paint(JViewport.java:731)
在 javax.swing.JComponent.paintChildren(JComponent.java:887)
在 javax.swing.JComponent.paint(JComponent.java:1063)
在 javax.swing.JComponent.paintChildren(JComponent.java:887)
在 javax.swing.JComponent.paint(JComponent.java:1063)
在 javax.swing.JComponent.paintToOffscreen(JComponent.java:5221)
在 javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1482)
在 javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1413)
在 javax.swing.RepaintManager.paint(RepaintManager.java:1206)
在 javax.swing.JComponent._paintImmediately(JComponent.java:5169)
在 javax.swing.JComponent.paintImmediately(JComponent.java:4980)
在 javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:770)
在 javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:728)
在 javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:677)
在 javax.swing.RepaintManager.access$700(RepaintManager.java:59)
在 javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1621)
在 java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
在 java.awt.EventQueue.dispatchEventImpl(EventQueue.java:701)
在 java.awt.EventQueue.access$000(EventQueue.java:102)
在 java.awt.EventQueue$3.run(EventQueue.java:662)
在 java.awt.EventQueue$3.run(EventQueue.java:660)
在 java.security.AccessController.doPrivileged(本机方法)
在 java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
在 java.awt.EventQueue.dispatchEvent(EventQueue.java:671)
在 java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244)
在 java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)
在 java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
在 java.awt.EventDispatchThread.run(EventDispatchThread.java:97)
线程“AWT-EventQueue-0”中的异常 java.lang.ArrayIndexOutOfBoundsException:14
在 javax.swing.JTable$1.getValueAt(JTable.java:689)
在 javax.swing.JTable.getValueAt(JTable.java:2720)
在 javax.swing.JTable.prepareRenderer(JTable.java:5718)
在 javax.swing.plaf.synth.SynthTableUI.paintCell(SynthTableUI.java:684)
在 javax.swing.plaf.synth.SynthTableUI.paintCells(SynthTableUI.java:581)
在 javax.swing.plaf.synth.SynthTableUI.paint(SynthTableUI.java:365)
在 javax.swing.plaf.synth.SynthTableUI.update(SynthTableUI.java:276)
在 javax.swing.JComponent.paintComponent(JComponent.java:778)
在 javax.swing.JComponent.paint(JComponent.java:1054)
在 javax.swing.JComponent.paintToOffscreen(JComponent.java:5221)
在 javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1482)
在 javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1413)
在 javax.swing.RepaintManager.paint(RepaintManager.java:1206)
在 javax.swing.JComponent.paintForceDoubleBuffered(JComponent.java:1090)
在 javax.swing.JViewport.blitDoubleBuffered(JViewport.java:1598)
在 javax.swing.JViewport.windowBlitPaint(JViewport.java:1559)
在 javax.swing.JViewport.setViewPosition(JViewport.java:1102)
在 javax.swing.plaf.basic.BasicScrollPaneUI$Handler.hsbStateChanged(BasicScrollPaneUI.java:1087)
在 javax.swing.plaf.basic.BasicScrollPaneUI$Handler.stateChanged(BasicScrollPaneUI.java:1038)
在 javax.swing.DefaultBoundedRangeModel.fireStateChanged(DefaultBoundedRangeModel.java:364)
在 javax.swing.DefaultBoundedRangeModel.setRangeProperties(DefaultBoundedRangeModel.java:302)
在 javax.swing.DefaultBoundedRangeModel.setValue(DefaultBoundedRangeModel.java:168)
在 javax.swing.JScrollBar.setValue(JScrollBar.java:463)
在 javax.swing.plaf.basic.BasicScrollBarUI$TrackListener.setValueFrom(BasicScrollBarUI.java:1253)
在 javax.swing.plaf.basic.BasicScrollBarUI$TrackListener.mouseDragged(BasicScrollBarUI.java:1195)
在 java.awt.Component.processMouseMotionEvent(Component.java:6553)
在 javax.swing.JComponent.processMouseMotionEvent(JComponent.java:3339)
在 java.awt.Component.processEvent(Component.java:6274)
在 java.awt.Container.processEvent(Container.java:2229)
在 java.awt.Component.dispatchEventImpl(Component.java:4861)
在 java.awt.Container.dispatchEventImpl(Container.java:2287)
在 java.awt.Component.dispatchEvent(Component.java:4687)
在 java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
在 java.awt.LightweightDispatcher.processMouseEvent(Container.java:4509)
在 java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
在 java.awt.Container.dispatchEventImpl(Container.java:2273)
在 java.awt.Window.dispatchEventImpl(Window.java:2719)
在 java.awt.Component.dispatchEvent(Component.java:4687)
在 java.awt.EventQueue.dispatchEventImpl(EventQueue.java:703)
在 java.awt.EventQueue.access$000(EventQueue.java:102)
在 java.awt.EventQueue$3.run(EventQueue.java:662)
在 java.awt.EventQueue$3.run(EventQueue.java:660)
在 java.security.AccessController.doPrivileged(本机方法)
在 java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
在 java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
在 java.awt.EventQueue$4.run(EventQueue.java:676)
在 java.awt.EventQueue$4.run(EventQueue.java:674)
在 java.security.AccessController.doPrivileged(本机方法)
在 java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
在 java.awt.EventQueue.dispatchEvent(EventQueue.java:673)
在 java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244)
在 java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)
在 java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
在 java.awt.EventDispatchThread.run(EventDispatchThread.java:97)
为什么会这样?这个问题有什么解决办法吗?谢谢!
非常抱歉!这是用于初始化表格的代码。希望它有用!
jp.setLayout(new BorderLayout());
JTable jt = new JTable(data, column);// data and columns are just 2D and 1D String arrays each
JTableHeader th = jt.getTableHeader();
th.setBackground(java.awt.Color.pink);
th.setEnabled(true);
jt.setTableHeader(th);
jt.setEnabled(false);
jp.add(jt, BorderLayout.CENTER);
JScrollPane scrollPane = new JScrollPane(jt, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
jt.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
scrollPane.setEnabled(false);
jp.add(scrollPane, BorderLayout.CENTER);
