Почему JTable не обновляет рендерер после changeSelection

Я использую changeSelection(int row, int column, логическое переключение, логическое расширение) в JTable Java. Я сделал так, что когда в таблице есть столбец с флажком и этот столбец щелкается, отправляется событие, показывающее, что теперь строка отмечена / снята, все, что хорошо, когда это делает пользователь. Но когда это делается программно, событие запускается, но JTable не обновляет рендер, я должен добавить что-то еще. Предполагается, что теперь флажок установлен, но нет.

Это код, который я использую для программного запуска события.

boolean success = editCellAt(row, col); // col is a known checkbox column number
if (success) {
   changeSelection(row, col, true, false);
}

Что теперь после этого? Событие запускается, но средство визуализации не показывает, что теперь флажок был проверен, если он не был проверен, и наоборот

1 ответ

Данные таблицы хранятся в TableModel, который является ОП MVC шаблон для JTable в Swing, и это то, что вам нужно иметь дело, поэтому, если вы хотите обновить свою таблицу, вам нужно fireTableCellUpdated от AbstractTableModel,

так что вы можете сделать что-то вроде этого:

public class MyTableModel extends AbstractTableModel {

    //implements the needed methods.

    @Override
    public void setValueAt(Object value, int rowIndex, int columnIndex) {
        //code
        fireTableCellUpdated(rowIndex, columnIndex);
    }
}

Узнайте больше о AbstractTableModel

Другие вопросы по тегам