1
f = figure;
 columnname = {'X' , 'Y'};
 Selection = {'A','B','C','D','E'}
[vals{1:numel(Selection),1}]=deal(false)
    columnform = {'logical','logical'};
t = uitable('Data',vals,'ColumnName', columnname, 'ColumnFormat', columnform,'ColumnEdit',[true true true], 'RowName', Selection);

如果你运行这个脚本,它应该会吐出一个数字。但我只能选择表格 X 列中的复选框。这是为什么?

4

1 回答 1

1

这是因为变量vals不包含足够的数据来填充表格。

简单地复制它以形成一个 2 列数组并且它可以工作。即添加这一行:

vals = [vals vals]

在创建表之前。

整个代码:

f = figure;
close all
clc
clear

columnname = {'X' , 'Y'};
Selection = {'A','B','C','D','E'}
[vals{1:numel(Selection),1}]=deal(false);

vals = [vals vals]

columnform = {'logical','logical'};

t = uitable('Data',vals,'ColumnName', columnname, 'ColumnFormat', columnform, 'RowName', Selection,'ColumnEdit',true(1,2*size(Selection,1)));

输出:

在此处输入图像描述

编辑:

要获取选定单元格的索引,您无需专门添加新变量。

通过设置,CellSelectionCallback您可以直接获取索引。

假设您在创建表后添加了这一行:

set(t,'CellSelectionCallback',@SelCB)

然后该函数可用于获取索引,如下所示:

function SelCB(~, event)

    SelectedCells = event.Indices        
 end

每次选择/取消选择单元格时,它将输出一个 1x2 元素向量。

于 2015-03-16T14:02:44.847 回答