Как умножить ячейки в jtable без какого-либо текстового поля - PullRequest
0 голосов
/ 27 ноября 2018

У меня есть таблица с 7 столбцами, а также несколько строк, я хочу умножить ячейки в таблице.
Скажем, когда кто-то вводит значение In (строка 0, столбец 0) и (строка 0, столбец 3)окончательный ответ автоматически появится в (строка 0, столбец 6)

Это мой код, когда некоторые щелкают по ячейке.
Не работает

Double a=Double.parseDouble ((String) jTable.getValueAt (0,0);
Double b=Double.parseDouble ((String) jTable.getValueAt (0,3);
Double c=a*b;
jTable.setValueAt(c,0,6);

1 Ответ

0 голосов
/ 27 ноября 2018

Прежде всего, если ваши столбцы содержат числа, вам следует хранить значение Double в модели, а не строку.

Поэтому вам необходимо переопределить метод getColumnClass(...) вашего TableModel, чтобы сообщить таблице тип данных, хранящихся в столбце, чтобы таблица могла использовать соответствующий рендерер / редактор.

Например:

@Override
public Class getColumnClass(int column)
{
    switch (column)
    {
        case 0: return Double.class;
        case 3: return Double.class;
        case 6: return Double.class;
        default: return Object.class;
    }
}

Вы также можете переопределить метод isCellEditable(...), чтобы предотвратить редактирование данных в столбце 6, поскольку его значение всегда будет результатом значений, найденных в столбцах 0 и 3.

когда кто-то вводит значение

Всякий раз, когда данные изменяются в таблице, TableModel обновляется.

Таким образом, один из подходов заключается в переопределении setValueAt(...)метод вашей TableModel для пересчета значения для столбца 6.

Основная логика будет такой:

@Override
public void setValueAt(Object value, int row, int column)
{
    super.setValueAt(value, row, column);

    if (column == 0 || or column == 3)
    {
        double column0 = getValueAt(row, 0);
        double column3 = getValueAt(row, 3);
        double result = column0 * column3;
        setValueAt(result, row, 6);
    }
}

Прочитайте раздел из учебника по Swing на Как использовать таблицы для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...