ユーザーが購入する前に製品を追加できる「カート」という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));
}