我在matlab中使用drop downmenu创建了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
提前致谢!
答案 0 :(得分:0)
感谢提示excaza。我实现了它 但是id_group_1现在由一行中的3x3字符数组组成。
[1] 'Reconstruction' [3x3 char]
[0] 'Segmentation' 'CheckBox'
[0] 'ComputerTomography' 'CheckBox'
[0] 'UltraSound' 'CheckBox'
[0] 'AcousticEmission' 'CheckBox'
as set(src,'Data',config_data);不允许单元格阵列。目前看来我无法避免在if / else条件下使用config_format !!
function modifyPopup(src)
id_group_1 = {true 'Reconstruction'...
['A.1'; 'A.2'; 'A.3'];...
false 'Segmentation' 'CheckBox';...
false 'ComputerTomography' 'CheckBox';...
false, 'UltraSound', 'CheckBox';...
false, 'AcousticEmission', 'CheckBox'};
id_group_2 = {false 'Reconstruction' 'CheckBox';...
true 'Segmentation' ['B.1'; 'B.2'; 'B.3'];...
false 'ComputerTomography' 'CheckBox';...
false, 'UltraSound', 'CheckBox';...
false, 'AcousticEmission', 'CheckBox'};
id_group_3 = {false 'Reconstruction' 'CheckBox';...
false 'Segmentation' 'CheckBox';...
true 'ComputerTomography'...
['C.1'; 'C.2'; 'C.3'];...
false, 'UltraSound', 'CheckBox';...
false, 'AcousticEmission', 'CheckBox'};
id_group_4 = {false 'Reconstruction' 'CheckBox';...
false 'Segmentation' 'CheckBox';...
false 'ComputerTomography' 'CheckBox';...
true, 'UltraSound',...
['D.1'; 'D.2'; 'D.3'];...
false, 'AcousticEmission', 'CheckBox'};
id_group_5 = {false 'Reconstruction' 'CheckBox';...
false 'Segmentation' 'CheckBox';...
false 'ComputerTomography' 'CheckBox';...
false, 'UltraSound', 'CheckBox';...
true, 'AcousticEmission', ['E.1'; 'E.2'; 'E.3']};
id_default = d;
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_data = id_group_1;
elseif isequal(selector(2),1)
config_data = id_group_2;
elseif isequal(selector(3),1)
config_data = id_group_3;
elseif isequal(selector(4),1)
config_data = id_group_4;
elseif isequal(selector(5),1)
config_data = id_group_5;
else
config_data = id_default;
end
%set(src,'ColumnFormat', config_format)
set(src,'Data',config_data);
end
end