0

私のjTableでは、最初の列に数値が含まれています。「行の追加」を選択すると、次の行で次のコードが実行されます。

DefaultTableModel model = (DefaultTableModel) jTable1.getModel();
int x = jTable1.getRowCount();
String cellValue = "";
if(x > 0){
    java.lang.Object cell = jTable1.getValueAt(x,0); 
    int a = Integer.parseInt(cell.toString());
    int b = a + 1;
    cellValue = Integer.toString(b);
}

java.lang.Object[] os = new Object[]{cellValue,"","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",};
model.addRow(os);
jTable1.setModel(model);
jTable1.setAutoCreateColumnsFromModel(true);

このコードのポイントは新しい行を追加することですが、新しい行の最初の値が入力されます。これがキー番号です。残念ながら、キー番号は行数とは関係ありません。

「行を追加」する jButton が押されると、この Exception がスローされます。

スレッド「AWT-EventQueue-0」での例外 java.lang.ArrayIndexOutOfBoundsException: 837 >= 837

837 はボタンを押したときに jTable が持っていた行の数であるため、数字は意味があります。

事前に助けてくれてありがとう。

4

1 に答える 1

0

これは、 DefaultTableModelのVector.size()にマップされます。

int x = jTable1.getRowCount();

そして、これはVector.get(int index)にマップされます:

java.lang.Object cell = jTable1.getValueAt(x,0);

Vector.get(int index)を詳しく見てみると、次のことがわかります。

例外: ArrayIndexOutOfBoundsException - インデックスが範囲外です (インデックス < 0 || インデックス >= サイズ())。

例外x == size()がスローされたためです。

これで問題が解決するはずです:

java.lang.Object cell = jTable1.getValueAt(--x,0);
于 2012-10-17T10:01:24.507 に答える