Оси, uicontrol или uitables сила, кажется, отсутствуют в новой графической системе, потому что они затенены другими компонентами.
В предыдущих релизах порядок компонентов, перечисленных в свойстве Children
, совпадает с порядком, в котором они создаются. Однако этот порядок не обязательно совпадает с расположением грудь-спина (или порядок размещения) компонентов на экране.
В предыдущих релизах uicontrol всегда отображаются сверху uipanels и uibuttongroups. Предыдущие релизы также позволяют осям отображаться сверху uipanel, не будучи дочерним элементом uipanel.
Начиная в R2014b, порядок компонентов, перечисленных в свойстве Children
, совпадает с порядком размещения дочерних компонентов на экране. Вы можете должны быть обновить свой код, если ваш пользовательский интерфейс содержит uipanel или uibuttongroup:
Относительное расположение не достаточно, чтобы отобразить оси, uicontrol, или uitable сверху uipanel или uibuttongroup. Чтобы поместить компонент сверху другого, установите его свойство Parent
быть компонентом, вы хотите появиться ниже его.
Uipanels и uibuttongroups имеют то же поведение порядка размещения на экране как uicontrol и uitables.
Новое поведение отражает изменения в MATLAB®, которые обеспечивают более сопоставимое поведение.
Этот код создает фигуру с верхней панелью, содержащей оси и нижняя панель, содержащая кнопку и всплывающее меню.
hf = figure; hb = uicontrol('Style','PushButton',... 'String','Plot',... 'Position',[175, 40, 60, 25]); hpulabel = uicontrol('Style','text',... 'String', 'Plot Type',... 'Position', [300, 65, 60, 20]); hpu = uicontrol('Style', 'popupmenu',... 'String', {'bar', 'plot', 'stem'},... 'Position',[310, 40, 60, 25]); topp = uipanel('Title', 'Plot',... 'Position',[0 .25 1 .75]); ah = axes('Position', [.10, .35 .80 .60]); bottomp = uipanel('Title','Plotting Options',... 'Position',[0 0 1 .25]);
Чтобы гарантировать нет никаких компонентов, скрытых позади контейнеров, установите свойство Parent
каждого компонента сделать его дочерним элементом контейнера. Например, следующий код восстанавливает исходный пользовательский интерфейс.
hf = figure; topph = uipanel('Parent', hf,'Title', 'Plot',... 'Position',[0 .25 1 .75]); axes('Parent', topph, 'Position', [.10, .35 .80 .60]); bottomph = uipanel('Parent', hf,'Title','Plotting Options',... 'Position',[0 0 1 .25]) hpulabel = uicontrol('Parent', bottomph, 'Style','text',... 'String', 'Plot Type',... 'Position', [300, 65, 60, 20]); hb = uicontrol('Parent', bottomph, 'Style','PushButton',... 'String','Plot',... 'Position',[175, 40, 60, 25]); hpu = uicontrol('Parent', bottomph, 'Style', 'popupmenu',... 'String', {'bar', 'plot', 'stem'},... 'Position',[310, 40, 60, 25]);
Восстановление размещения GUIDE UI требует двух отдельных шагов:
Зафиксируйте размещение в GUIDE.
Зафиксируйте дочерний порядок компонентов.
Чтобы зафиксировать размещение в GUIDE, откройте файл fig в GUIDE и используйте опцию Send to back, чтобы перестроить укладку. Например, чтобы переместить панель в это размещение позади всех других компонентов, щелкните правой кнопкой по панели и выберите Send to back.
Чтобы зафиксировать дочерний порядок компонентов, так, чтобы они отобразили то же самое как в GUIDE, выбирают View> Object Browser. Затем выберите компонент и переместите его немного в панели или группе кнопок. Например, выбор и перемещение этой кнопки Start немного, в то время как это в списке, делают его дочерним элементом панели.
Дочерние компоненты отображаются сверху их родительского элемента, таким образом, эта кнопка Start отображается сверху панели, когда программа запускается.