2015-10-19 36 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類似於上面我舉的例子(請參閱我提供的鏈接),其中一個向我們展示了您的問題,這將有助於我們真正幫助您。

相關問題