【发布时间】:2016-07-12 13:44:27
【问题描述】:
我在 Matlab 中使用下拉菜单创建了 uitable。 不知何故,下拉菜单不会随 switch/case 更新
我尝试用 if else 条件替换 switch/case。 下拉菜单得到更新,但它没有给我想要的输出!
要模拟请运行下面的代码
有什么想法或建议吗?
function [] =foouitable()
f = figure('Position',[100 100 400 150]);
% Column names and column format
columnname = {'Available','Options','SubOptions'};
columnformat = {'logical','bank',{'CheckBox' 'SelectSubOptions'}};
% Define the data
d = {false 'Reconstruction' 'CheckBox';...
false 'Segmentation' 'CheckBox';...
false 'ComputerTomography' 'CheckBox';...
false, 'UltraSound', 'CheckBox';...
false, 'AcousticEmission', 'CheckBox'};
% Create the uitable
t = uitable('Data', d,...
'ColumnWidth', {70 120 100},...
'ColumnName', columnname,...
'ColumnFormat', columnformat,...
'ColumnEditable', [true false true],...
'RowName',[],...
'CellEditCallback',@edit)
set(t,'Tag','Config_table');
function edit(src,evt)
if evt.Indices(2) == 1
modifyPopup( src)
end
end
% Set width and height
t.Position(3) = t.Extent(3);
t.Position(4) = t.Extent(4);
function modifyPopup(src)
id_group_1 = {'A.1';'A.2';'A.3'};
id_group_2 = {'B.1';'B.2';'B.3'};
id_group_3 = {'C.1';'C.2';'C.3'};
id_group_4 = {'D.1';'D.2';'D.3'};
id_group_5 = {'E.1';'E.2';'E.3'};
id_default = {'CheckBox'};
config_data = get(src,'Data');
selector = config_data(1:5,1);
selector = cell2mat(selector);
config_format = get(src,'ColumnFormat');
if isequal(selector(1),1)
config_format{3} = id_group_1';
elseif isequal(selector(2),1)
config_format{3} = id_group_2';
elseif isequal(selector(3),1)
config_format{3} = id_group_3';
elseif isequal(selector(4),1)
config_format{3} = id_group_4';
elseif isequal(selector(5),1)
config_format{3} = id_group_5';
else
config_format{3} = id_default;
end
set(src,'Data',config_data);
set(src,'ColumnFormat',config_format);
end
end
提前致谢!
【问题讨论】:
-
请提供可以重现您的问题的代码,无需复杂的取消注释步骤,并说明您想要的输出是什么。
-
我已经按照我的 excaza 的建议编辑了代码。当我选中其中一个复选框时,我希望相应的下拉菜单显示组值,而其他下拉菜单应保持不变。
-
为什么你在
if块中修改config_format而不是config_data?你为什么要修改'ColumnFormat'?
标签: matlab matlab-uitable