首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java.lang.ArrayIndexOutOfBoundsException: 7 >= 7

java.lang.ArrayIndexOutOfBoundsException: 7 >= 7
EN

Stack Overflow用户
提问于 2017-11-27 06:06:48
回答 3查看 2.4K关注 0票数 0

我很难把14行数据从我的jTable放到我的Textfield,你们能帮我吗?我对编码很陌生。

代码语言:javascript
复制
    try {

        String data = jSubject.getSelectedItem().toString();

        Class.forName("org.h2.Driver");
        Connection conn = DriverManager.getConnection("jdbc:h2:dist/Database/./h2database/recordDB", "test", "test");
        Statement st = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
        String sql = "Select * from " + data;

        ResultSet rs = st.executeQuery(sql);

        DefaultTableModel a = (DefaultTableModel) jTable2.getModel();
        a.setRowCount(0);
        while (rs.next()) {
            String q = rs.getString("Subjects");

            a.addRow(new Object[]{q});
        }
        JTableHeader th = jTable2.getTableHeader();
        TableColumnModel tcm = th.getColumnModel();
        TableColumn tc = tcm.getColumn(0);
        tc.setHeaderValue("Subjects");
        th.repaint();

        DefaultTableModel xa = (DefaultTableModel) jTable2.getModel();
        // int selectedRowIndex = jTable2.getSelectedRow();

        s1.setText(xa.getValueAt(0, 0).toString());
        s2.setText(xa.getValueAt(1, 0).toString());
        s3.setText(xa.getValueAt(2, 0).toString());
        s4.setText(xa.getValueAt(3, 0).toString());
        s5.setText(xa.getValueAt(4, 0).toString());
        s6.setText(xa.getValueAt(5, 0).toString());
        s7.setText(xa.getValueAt(6, 0).toString());
        s8.setText(xa.getValueAt(7, 0).toString());
        s9.setText(xa.getValueAt(8, 0).toString());
        s10.setText(xa.getValueAt(9, 0).toString());
        s11.setText(xa.getValueAt(10, 0).toString());
        s12.setText(xa.getValueAt(11, 0).toString());
        s13.setText(xa.getValueAt(12, 0).toString());
        s14.setText(xa.getValueAt(13, 0).toString());


    } catch (ClassNotFoundException ex) {
        Logger.getLogger(CBL.class.getName()).log(Level.SEVERE, null, ex);
    } catch (SQLException ex) {
        Logger.getLogger(CBL.class.getName()).log(Level.SEVERE, null, ex);
    }

每次运行代码时,总是会给出java.lang.ArrayIndexOutOfBoundsException: 7 >= 7错误。

代码语言:javascript
复制
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 7 >= 7
at java.util.Vector.elementAt(Vector.java:474)
at javax.swing.table.DefaultTableModel.getValueAt(DefaultTableModel.java:648)
at progress.chart.CBL.jSubjectActionPerformed(CBL.java:1750)
at progress.chart.CBL.access$1600(CBL.java:34)
at progress.chart.CBL$19.actionPerformed(CBL.java:1041)
at javax.swing.JComboBox.fireActionEvent(JComboBox.java:1258)
at javax.swing.JComboBox.setSelectedItem(JComboBox.java:586)
at javax.swing.JComboBox.setSelectedIndex(JComboBox.java:622)
at javax.swing.plaf.basic.BasicComboPopup$Handler.mouseReleased(BasicComboPopup.java:861)
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:290)
at java.awt.Component.processMouseEvent(Component.java:6533)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at javax.swing.plaf.basic.BasicComboPopup$1.processMouseEvent(BasicComboPopup.java:510)
at java.awt.Component.processEvent(Component.java:6298)
at java.awt.Container.processEvent(Container.java:2236)
at java.awt.Component.dispatchEventImpl(Component.java:4889)
at java.awt.Container.dispatchEventImpl(Container.java:2294)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
at java.awt.Container.dispatchEventImpl(Container.java:2280)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

这是你们想要的完整的堆栈跟踪

EN

回答 3

Stack Overflow用户

发布于 2017-11-27 06:31:06

看起来你在代码中犯了一个错误。方法调用DefaultTableModel.getValueAt(int row, int column)抛出一个异常,因为您的行数少于8行。我建议检查行数并在最后一行停止。在您的代码中,您期望有14行,但实际上您的行较少。

在评论中回答你的问题:

当我停留在s7.setText(xa.getValueAt(6,0).toString())时,它可以工作;那么如何增加数组中的7列呢?因为我想把它变成14甚至更多

  1. 您在上面的while循环(a.addRow(new Object[]{q});)中只添加了7行。情况可能会发生变化,您可能会从数据库中得到较少或更多的行。
  2. 我想这不是个好问题,因为看起来你问的是怎么写你的程序。此刻,我放弃了,因为我无法在不了解需求等情况下为您编写程序。谢谢您的理解。
票数 0
EN

Stack Overflow用户

发布于 2017-11-27 06:35:36

DefaultTableModel看起来像一个数组对象,可能DefaultTableModel的数组长度在7下面。因此,当您放入这个数组7或更多对象时,就会出现ArrayIndexOutOfBoundsException错误。

因此,您需要检查DefaultTableModel对象数组长度。

票数 0
EN

Stack Overflow用户

发布于 2017-11-27 07:05:32

很可能是在xa.getValueAt(7, 0) xa.getValueAt(8, 0).....中发现的异常,所以请按下面的行DefaultTableModel xa = (DefaultTableModel) jTable2.getModel();检查xa的大小

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47504846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档