Каково правильное событие для изменений в любой ячейке JTable? - PullRequest
7 голосов
/ 14 января 2010

У меня есть простая JTable, есть два столбца, которые имеют значение: количество и значение (целые числа). Каждый раз, когда пользователь вводит новую строку или обновляет ее, каждое значение строки должно умножаться на количество, результаты суммируются вместе, а итоговая сумма отображается в JLabel вне JTable. Выглядит довольно просто. За исключением того, что я понятия не имею, какое событие мне нужно искать. Что-то вроде «значение ячейки изменилось»? Когда я щелкаю правой кнопкой мыши по JTable в NetBeans, я не вижу такого события или не распознаю его;) В любом случае, прежде чем я нашел какое-то странное дурацкое решение, я подумал, что могу спросить здесь, как правильно это сделать :)

Ответы [ 2 ]

7 голосов
/ 14 января 2010

Вы должны добавить TableModelListener , как описано здесь .

также, в вашем слушателе, когда вы обновите значение других значений ячейки программно, вам нужно будет вызвать model.fireTableCellUpdated, чтобы сообщить свинг об изменениях

3 голосов
/ 15 января 2010

Наконец мне удалось найти, как это сделать в NetBeans со всей защитой кода и так далее. Щелкните правой кнопкой мыши JTable в представлении «Дизайн», выберите «Свойства», затем вкладку «Код», а затем добавьте свой код в раздел «Предварительное добавление кода» (код оценивается до добавления таблицы в контейнер или чего-то в этом роде).

Точный код, который работает для меня, таков:

table.getModel().addTableModelListener(
new TableModelListener() 
{
    public void tableChanged(TableModelEvent evt) 
    {
         // here goes your code "on cell update"
    }
});

Я знаю, что Том, выше, предложил никогда не вызывать getModel (), но я слишком новичок в Java, чтобы понять почему (пожалуйста, объясните, пожалуйста?) :) и это всего лишь пример, я добавив этот ответ, просто чтобы показать , как сделать это в NetBeans (спасибо pstanton за ответ , что сделать). Потому что я нашел очень много людей, спрашивающих об этом в Интернете, но у них нет реальных ответов (кроме «скопировать защищенный код из защищенной области NetBeans и затем настроить таблицу).

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