Добавить флажок для CodenameOne TableModel в компоненте Table

Можете ли вы сказать мне, если я должен делать это по-другому? Мне нужно сделать последнюю ячейку в моих строках данных флажком, который привязан к объекту, который я удалю из списка при нажатии кнопки удаления. Когда я вручную создаю TableModel в коде и добавляю флажок, он визуализируется в ячейке как "to-string" объекта, а не как фактический флажок.

Итак, вопрос: есть ли другой способ сделать так, чтобы CheckBox показывался как фактический флажок?

String[] columnNames = {"Type","Qty","Raw TB","Usable TB","Del?"};
Object[][] cells = {{"TOTAL","","0","0",""},{"DD4500",1,0f,0f,new CheckBox()}};
Table cbSummaryTable = findSummaryTable(buildContainer);
TableModel tableModel = new DefaultTableModel(columnNames,cells);
cbSummaryTable.setModel(tableModel);

Таблица, отображаемая с кодом выше

Редактировать: я попробовал предложение от @ShaiAlmog, и хотя оно выглядело многообещающе (и напомнило мне о чем-то, что я видел в другом месте), похоже, по какой-то причине оно не сработало. таблица теперь просто говорит "правда" и "ложь". Я также попробовал уловку, которую я видел о переопределении TableModel, чтобы сделать ячейку редактируемой, и это тоже не помогло.

Новый код:

private void clearCBSummaryTable(Container buildContainer){
    String[] columnNames = {"Type","Qty","Raw TB","Usable TB","Del?"};
    Object[][] cells = {{"TOTAL","",0f,0f,Boolean.TRUE},{"DD4500",1,0f,0f,Boolean.FALSE}};
    Table cbSummaryTable = findSummaryTable(buildContainer);
    TableModel tableModel = new DefaultTableModel(columnNames,cells){
        @Override
        public boolean isCellEditable(int row, int column) {
            if (row >= 2 && column == 4){
                return true;
            }else {
                return super.isCellEditable(row, column);
            }
        }
    };
    cbSummaryTable.setModel(tableModel);
}

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

1 ответ

Попробуй это:

 Object[][] cells = {
    {"TOTAL","","0","0",Boolean.FALSE},
    {"DD4500",1,0f,0f,Boolean.TRUE}
 };

Модель содержит данные, поэтому установка данных на boolean будет неявно форматировать его в ячейке таблицы. Не стоит смешивать модель и вид (CheckBox это вид)

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