适用于下拉菜单的matlab

时间:2016-07-12 13:44:28

标签: matlab matlab-uitable

我在matlab中使用drop downmenu创建了uitable。 不知何故,下拉菜单没有用switch / case

更新

enter image description here

我尝试用if else条件替换switch / case。 下拉菜单得到更新,但它没有给我所需的输出!

模拟请运行下面的代码

enter image description here

任何想法或指示?

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

提前致谢!

1 个答案:

答案 0 :(得分:0)

感谢提示excaza。我实现了它  但是id_group_1现在由一行中的3x3字符数组组成。

[1]    'Reconstruction'        [3x3 char]
[0]    'Segmentation'          'CheckBox'
[0]    'ComputerTomography'    'CheckBox'
[0]    'UltraSound'            'CheckBox'
[0]    'AcousticEmission'      'CheckBox'

enter image description here

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