1

ユーザーが購入する前に製品を追加できる「カート」というJTableがあります。そのテーブルの唯一の編集可能な列は、Quantityと呼ばれる最後の列です。これにより、ユーザーは購入したい製品の量を変更できます。デフォルトでは、製品を追加するとき、この値は1です。これらのデフォルト値を使用して請求書を作成すると、ORDERSDBテーブルが正常に更新されます。ただし、数量セルの金額を入力して変更すると、修正方法がわからないという例外が発生します。その列から取得しようとしている整数値が、整数ではなく文字列として返されるように見えます。

基本的に、私は整数のtempStockを持っており、そこに製品の数量を保存します。その値は、行「i」と最後の列「4」のテーブルのモデルから取得します。

int tempStock = (int)cartModel.getValueAt(i, 4);

プログラムがこのテーブルに新しい行を追加するとき、4番目の列はデフォルトで1であり、その値を呼び出すと、整数を取得します。ただし、その列に他の値を入力すると、intは返されませんが、Stringが返されます。

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer

変数のタイプをチェックすることで、一時的な回避策を見つけました。

/** Check if Quantity field was updated **/
if (cartModel.getValueAt(i, 4).getClass().getName().equals("java.lang.Integer")) {
    tempStock = (int)cartModel.getValueAt(i, 4);
} else {
    tempStock = Integer.parseInt((String)cartModel.getValueAt(i, 4));
}
4

1 に答える 1

3
  1. フォームでint値を返すには、TableModelで値Integerを使用してColumnClassを設定する必要がありますint tempStock = (int)cartModel.getValueAt(i, 4);

  2. 実際の推測のために、 SSCCEで質問を編集する必要があるのを助けます

于 2012-03-22T09:43:30.767 に答える