Я пытаюсь разработать свои первые графические интерфейсы с uifigure
(программно, а не с appdesigner
[но я добавил его в качестве ключевого слова, поскольку оно связано]), и (как и ожидалось) я пропускаю некоторыерасширенных функций и виджетов, предоставляемых GUI Layout Toolbox и Widgets Toolbox для стандартных символов Java.
Таким образом, я попытался изменить некоторые виджеты, которые ябыл разработан до uifigure
, и uigridlayout
кажется весьма удобным для замены uix.VBox
и uix.HBox
из GUI Layout Toolbox.
Для стандартных Java-фигур предположим, что у меня есть класс MyWidget
и соответствующий ему экземпляр mywidget
. MyWidget
будет, наконец, предком matlab.ui.container.internal.UIContainer
, который предоставляет метод addChild
, который можно переопределить для настройки поведения
uicontrol(mywidget)
Я ищу то же самое для uifigure
компоненты. Предположим, что следующий класс получен из matlab.ui.container.GridLayout
, который является классом результата uigridlayout
вызова.
classdef MyGrid < matlab.ui.container.GridLayout
methods
function self = MyGrid(varargin)
self = self@matlab.ui.container.GridLayout(varargin{:});
end
end
methods ( Access = protected )
function addChild(self, child)
disp('hooray');
addChild@matlab.ui.container.GridLayout(self, child);
end
end
end
Когда я сейчас инициирую MyGrid
экземпляр
g = MyGrid()
все выглядит хорошо:
g =
MyGrid with properties:
RowHeight: {'1x' '1x'}
ColumnWidth: {'1x' '1x'}
, но добавление дочернего элемента к нему не вызывает метод addChild
:
>> uibutton(g)
ans =
Button (Button) with properties:
Text: 'Button'
Icon: ''
ButtonPushedFcn: ''
Position: [100 100 100 22]
Примечание. Нет вывода hooray
выше. Свойство Parent
является правильным:
>> ans.Parent
ans =
MyGrid with properties:
RowHeight: {'1x' '1x'}
ColumnWidth: {'1x' '1x'}
Show all properties
Исходя из этого, я предполагаю, что addChild
- это не метод, используемый (по крайней мере, matlab.ui.container.GridLayout
) для добавления потомка.
Кто-нибудь знает механизм добавления дочернего элемента в контейнер в компоненте uifigure
?