2015-10-19 30 views
-4

我想一个新行添加到空JTableJTable中java.lang.IndexOutOfBoundsException:无效的范围

这里是我的代码:

Object columnNamesPax[] = {"#","Name","Surname","Sex","Age","Class"}; 
Object[][] data = new Object[5][columnNamesPax.length]; 

JTable tablePax = new JTable(new DefaultTableModel(data,columnNamesPax)); 

DefaultTableModel defaultModel = (DefaultTableModel) tablePax.getModel(); 
System.out.println(tablePax.getColumnCount()); 
defaultModel.addRow(new Object[]{"1","2","3","4","5","6"}); 

控制台输出:

在异常线程“AWT-EventQueue-0”6

java.lang.IndexOutOfBoundsException:无效范围

我不明白为什么有IndexOutOfBoundsException异常,如果列数为6

+5

您最好在这里向我们展示您的代码。我们不想看到所有这些,而是​​应该将代码压缩到仍然编译的最小位,没有额外的代码与您的问题无关,但仍然表明您的问题,换句话说,[mcve ](请参阅链接)。 –

+1

上面的代码不显示错误。例如,当我使用上面的代码创建** my ** [mcve]时,不会出现这样的错误:[链接到我的mcve](http://pastebin.com/fPZ8GtUm)。所以**再次**这是由你来创建和发布***你的*** [mcve],所以我们可以帮助你。 –

+0

你接受了一个非答案,发生了什么?请说明您是否或如何解决了您的问题。 –

回答

1

不是答案

您的代码上面并没有显示错误。例如,当我用上面的代码来创建mcve,不会发生这样的错误:

import javax.swing.*; 
import javax.swing.table.*; 

public class Foo { 
    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
       Object columnNamesPax[] = { "#", "Name", "Surname", "Sex", 
         "Age", "Class" }; 
       Object[][] data = new Object[5][columnNamesPax.length]; 

       JTable tablePax = new JTable(new DefaultTableModel(data, 
         columnNamesPax)); 

       DefaultTableModel defaultModel = (DefaultTableModel) tablePax 
         .getModel(); 
       System.out.println(tablePax.getColumnCount()); 
       defaultModel.addRow(new Object[] { "1", "2", "3", "4", "5", "6" }); 

       JOptionPane.showMessageDialog(null, new JScrollPane(tablePax)); 
      } 
     }); 
    } 
} 

您刚刚发布的代码不可编译和unrunnable片段只是不削减它,因为他们没有足够的信息让我们看到你的错误。此外,我们不希望看到您完整的代码库,因此通过大量的不相关的代码被淹没,所以再次它是由你来创建和发布Minimal, Complete, and Verifiable example类似于上面我举的例子(请参阅我提供的链接),其中一个向我们展示了您的问题,这将有助于我们真正帮助您。

相关问题