Не удается получить правильное значение из столбца в JTable - PullRequest
1 голос
/ 22 марта 2012

У меня есть JTable под названием «Корзина», где пользователь может добавлять товары перед их покупкой. Единственный редактируемый столбец в этой таблице - это последний столбец «Количество», который позволяет пользователям изменять количество продуктов, которые они хотят купить. По умолчанию при добавлении товаров это значение равно единице. Когда я создаю счет с этими значениями по умолчанию, таблица БД ORDERS успешно обновляется. Однако, если я изменил сумму в ячейке количества, введя ее, я получу исключение, которое не знаю, как исправить. Может показаться, что целочисленное значение, которое я пытаюсь получить из этого столбца, возвращается в виде строки, а не целого числа.

В основном у меня есть целое число tempStock, в котором я храню количество продуктов. Я получаю это значение из модели таблицы в строке "i" и последнем столбце "4".

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

Когда программа добавляет новую строку в эту таблицу, столбец fourht по умолчанию равен 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));
}

1 Ответ

3 голосов
/ 22 марта 2012
  1. вам нужно установитьColumnClass в TableModel со значением Integer для возврата значения int в форме int tempStock = (int)cartModel.getValueAt(i, 4);

  2. для реальных предложений и помочь вам отредактироватьВаш вопрос с SSCCE

...