2015-05-17 60 views
0

我在使用NetBeans IDE,語言爲Java,主要類爲JFrameForm。在一個循環中向jTable添加行和列

我有一個JTable 標籤只有一行和一列按鈕的JTextField EN,在類型應爲整數。輸入是可變的n

我需要創建矩陣n行和n列。所以n x n矩陣的維數作爲j表格。

點擊該按鈕後,變量ñ將被保存爲維和循環將開始添加列和行至ñ

的代碼如下:

private void sendMouseClicked(java.awt.event.MouseEvent evt) {          
     DefaultTableModel model = (DefaultTableModel) tab.getModel(); 

     String sn=en.getText(); 
     int n=Integer.valueOf(sn); 

     for(int j=2;j<=n;j++){ 
      model.addColumn(null); // I know this is wrong 
      model.addRow(new Object[]{test.getText()+j}); 
      test.setText(test.getText()+j); 
     } 
    }   

我得到錯誤

異常在線程 「AWT-EventQueue的-0」 java.lang.ArrayIndexOutOfBoundsException:1個

細胞應該是空。

請幫我輸入一欄。那裏有什麼對象?

+1

使用自定義表模型,這將是最好的方法。 – MJSG

+0

程序中的「a」是什麼?看起來好像你試圖讓一個對象映射到一個大於數組長度的索引,因爲'j'應該低於長度,也許'a'更大? – pimmen

+0

這只是錯誤。我的意思是n – Dominika

回答

1

集列名的JTable,然後在JTable中添加行..

private void sendMouseClicked(java.awt.event.MouseEvent evt) {          
    String sn=en.getText(); 
    int n=Integer.valueOf(sn); 
    java.util.Vector columns = new java.util.Vector(); 
    columns.add("Your Column Name"); 
    java.util.Vector rows = new java.util.Vector(); 
    for(int j=2;j<=n;j++){ 
     java.util.Vector row = new java.util.Vector(); 
     row.add(test.getText()+j); 
     rows.add(row); 
     test.setText(test.getText()+j); 
    } 
    DefaultTableModel model = new DefaultTableModel(rows, columns); 
    tab.setModel(model); 
} 

這將工作..

+0

也有小編輯工作。 (int j = 2; j <= n; j ++){ java.util.Vector column = new java.util.Vector(); column.add(test.getText()+ j); 列。添加(列); java.util.Vector row = new java.util.Vector(); row.add(test.getText()+ j); rows.add(row); test.setText(test.getText()+ j); }' – Dominika

+0

no ...變量'列'是正確的..只需要將'row'添加到'rows' ... – ELITE

0

我認爲(我沒有檢查過)您的JTable嘗試添加一行,但由於您的addColumn(null)沒有任何列。

爲什麼不用model.addColumn("");用空字符串來添加空單元?

+0

我試過了。沒有工作。 – Dominika

0

從我可以推斷,你要使用的變量n爲int。 getText()方法會將該值作爲字符串返回,valueOf()方法將以字符串形式返回該字符串。 valueOf()用於你想要的the exact opposite,例如把一個int轉換成一個字符串。您應該使用Integer.parseInt(),而不是在this Stackoverflow question中概述。這將有望擺脫出界限制的例外。