我已经设置了一个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);