MATLAB uitable逻辑复选框未被选中

时间:2013-10-26 18:15:00

标签: matlab user-interface checkbox matlab-guide matlab-uitable

我在MATLAB R2012b中使用GUIDE,并且uitable具有可编辑的逻辑复选框。 Cell Edit回调如下:

function data_table_CellEditCallback(hObject, eventdata, handles)
row = eventdata.Indices(1);
column = eventdata.Indices(2);
if column ~= 1 % The checkboxes are all in the first row.  
    guidata(hObject,handles);
    return;
end
table_data = get(hObject,'Data');
if table_data(row,column) == true
    table_data(row,column) = false;
else
    table_data(row,column) = true;
end
set(hObject, 'Data', table_data);
handles.checked(row) = table_data(row,column); % Variable holding the data.  
guidata(hObject,handles);
end

当我单击其中一个复选框时,我可以看到表中的数据得到适当更新(get(hObject,'Data')handles.checked(row)都返回更新的值),但GUI中的实际复选框确实如此没有视觉上的检查。如果我再次单击它,变量将再次更新,但复选框仍未选中。

所以数据正在更新,但GUI却没有。这里出了什么问题?

注意:逻辑复选框在GUIDE中设置为可编辑,因此这不是问题。

1 个答案:

答案 0 :(得分:2)

用于设置数据网格的“数据”属性的数组通常是一个单元格数组。

执行回调时,数组中的值将反映复选框的当前状态。也就是说,您不需要设置它们。

如果你想设置table_data,你应该使用类似的东西:

 table_data{row,column} = eventdata.NewData;

顺便说一句,我假设您已在“指南表属性编辑器”中将列格式设置为“逻辑”。