1

我希望我的 uitable 有可以单击的复选框。如果我这样做,我会收到警告:表数据在此位置不可编辑。

就像现在一样,这些框会出现,但您无法单击它们。

 p=figure
 D={'1', '2', '3' ,'4', '5','6'
    '7', '8', '9', '10', '11' ,'12'}
 data=D(:,1)
cnames={'', 'Left', 'Right','P1', 'P2', 'P3'}

table_resultat_nip=uitable('position',[0 200 500 200],...
   'parent',p,...
   'columnname', cnames,...
   'rowname', '',...
   'data',data,...
   'ColumnFormat',{'char','logical','logical','logical','logical','logical'},...
   'columneditable',[false, true, true, true, true, true])   ;
4

1 回答 1

1

您要编辑的单元格的数据需要采用正确的格式。

有两个问题:

1)

data = D(:,1);

我知道您只想使用第一列的数据,但您还需要将其他列声明为本地人。

2)

您的数据不适合columnformat,因此请使用:

D = {'1', false, false ,false, false, false; ...
     '7', false, false, false, false, false};

解决方案:

D = {'1', '2', '3' ,'4', '5','6' ;
     '7', '8', '9', '10', '11' ,'12'};


data = [ D(:,1)  num2cell( false( size(D,1) , size(D,2)-1) ) ];
%// where the -1 depends on how many "real" data columns you have.

或更通用:

N = 1;   %// Number data columns to keep
data = [ D(:,1:N)  num2cell( false( size(D,1) , size(D,2)-N) ) ];

总而言之,以下代码有效,现在您需要将其应用于您的案例:

p = figure;

D = {'1', '2', '3' ,'4', '5','6' ;
     '7', '8', '9', '10', '11' ,'12'};

data = [ D(:,1)  num2cell( false( size(D,1) , size(D,2)-1) ) ];

cnames = {'', 'Left', 'Right','P1', 'P2', 'P3'};

table_resultat_nip=uitable('position',[0 200 500 200],...
   'columnname', cnames,...
   'rowname', '',...
   'data',data,...
   'ColumnFormat',{'char','logical','logical','logical','logical','logical'},...
   'ColumnEditable',[false, true, true, true, true, true]...
   );

关于评论:

好的,一个更通用的案例:

N = 1;   %// Number data columns to keep
M = 5;   %// Number of checkboxes desired

data = [ D(:,1:N)  num2cell( false( size(D,1) , M) ) ];
于 2014-07-15T10:59:37.033 回答