单击显示轴 - matlab

时间:2015-03-15 19:19:30

标签: matlab user-interface listbox matlab-guide

我有一个列表框按钮,假设它包含3个选项:' 1' ' 2' ' 3&#39 ;. 我也有5个轴。 当' 2'被选中我在这5个轴上绘制了一些东西。 我想知道的是如何制作5个仅在以下情况下显示的轴#3;' 3'被选中。 我的意思是用户将无法看到轴6~10,直到他按下' 3'如果他按下' 1'或者' 2'然后用户再次无法看到它们。

1 个答案:

答案 0 :(得分:0)

您可以将共享相同属性(即同时可见或不同)的轴分组为1个变量(例如TopAxesBottomAxes),从而更新其属性列表框回调中的时间。

以下是6轴的示例,顶部3个,底部3个。当用户选择“1”时,所有轴都可见。选择“2”时,只有顶轴,选择“3”时,只能看到底轴。以下是带截图的代码:

function ShowAxesGUI

clear
clc

hFig = figure('Position',[100 100 600 600]);

%// Create axes
handles.ax1 = axes('Position',[.1 .6 .2 .2]);
handles.ax2 = axes('Position',[.4 .6 .2 .2]);
handles.ax3 = axes('Position',[.7 .6 .2 .2]);

%// Group top axes together
handles.TopAxes= [handles.ax1;handles.ax2;handles.ax3];

handles.ax4 = axes('Position',[.1 .2 .2 .2]);
handles.ax5 = axes('Position',[.4 .2 .2 .2]);
handles.ax6 = axes('Position',[.7 .2 .2 .2]);

%// Group bottom axes together
handles.BottomAxes= [handles.ax4;handles.ax5;handles.ax6];

set(handles.BottomAxes,'Visible','off')

%//  Create listbox

handles.listbox1 = uicontrol('Style','list','Position',[50 520 60 60],'Value',1,'String',{'1';'2';'3'},'Callback',@(s,e) ListCallback);

guidata(hFig,handles)

    %// Listbox callback
    function ListCallback

        handles = guidata(hFig);

        %// Get the selected item in the listbox
        ListSelection = get(handles.listbox1,'Value');

        switch ListSelection

            case 1                
                set(handles.TopAxes,'Visible','on')
                set(handles.BottomAxes,'Visible','on')
            case 2
                set(handles.TopAxes,'Visible','on')
                set(handles.BottomAxes,'Visible','off')
            case 3
                set(handles.TopAxes,'Visible','off')
                set(handles.BottomAxes,'Visible','on')
        end

        guidata(hFig,handles)
    end
end

有3种不同的选择:

1)

enter image description here

2)

enter image description here

3)

enter image description here

就是这样。祝你好运!