Добавьте компоненты пользовательского интерфейса в App Designer программно

Большинство компонентов пользовательского интерфейса доступно в Component Library App Designer для вас, чтобы перетащить мышью на холст. Иногда, вы можете должны быть добавить компоненты программно в Представлении кода. Вот несколько общих ситуаций:

  • Создание компонентов, которые не доступны в Component Library. Например, приложение, которое отображает диалоговое окно, должно вызвать соответствующую функцию, чтобы отобразить диалоговое окно.

  • Создание компонентов динамически согласно условиям во время выполнения.

Когда вы добавляете компоненты пользовательского интерфейса программно, необходимо вызвать соответствующую функцию, чтобы создать компонент, присвоить коллбэк компоненту, и затем записать коллбэк как функцию помощника.

Создайте компонент и присвойте коллбэк

Вызовите функцию, которая создает компонент из существующего коллбэка (для списка функций компонента пользовательского интерфейса, смотрите Develop Apps Using the uifigure Function). StartupFcn коллбэк является хорошим местом, чтобы создать компоненты, потому что тот коллбэк запускается, когда приложение запускает. В других случаях вы можете создать компоненты в различной функции обратного вызова. Например, если вы хотите отобразить диалоговое окно, когда пользователь нажимает кнопку, вызовите функцию диалогового окна из функции обратного вызова кнопки.

Когда вы вызовете функцию, чтобы создать компонент, задайте фигуру или один из его дочерних контейнеров как родительский объект. Например, эта команда создает кнопку и задает фигуру как родительский объект. В этом случае у фигуры есть имя по умолчанию, которое присваивает App Designer (app.UIFigure).

b = uibutton(app.UIFigure);

Затем задайте свойство коллбэка компонента как указатель на функцию формы @app.callbackname. Например, это наборы команд ButtonPushedFcn свойство кнопки b к функции обратного вызова под названием mybuttonpress.

b.ButtonPushedFcn = @app.mybuttonpress;

Запишите коллбэк

Запишите функцию обратного вызова для компонента как частная функция помощника. Функция должна иметь appsrc , и event в качестве первых трех аргументов. Вот пример коллбэка, записанного как частная функция помощника.

methods (Access = private)
    
        function mybuttonpress(app,src,event)
            disp('Have a nice day!');
        end
        
end

Чтобы записать коллбэк, который принимает дополнительные входные параметры, задайте дополнительные аргументы после первых трех. Например, этот коллбэк имеет, принимает два дополнительных входных параметров, x и y:

methods (Access = private)
    
        function addxy(app,src,event,x,y)
            disp(x + y);
        end
        
end

Чтобы присвоить этот коллбэк компоненту, задайте свойство коллбэка компонента как массив ячеек. Первым элементом в массиве ячеек должен быть указатель на функцию. Последующими элементами должны быть дополнительные входные значения. Например:

b.ButtonPushedFcn = {@app.addxy,10,20};

Пример: поле диалогового окна подтверждения с закрыть функцией

Это приложение показывает, как отобразить поле диалогового окна подтверждения, которое выполняет коллбэк, когда диалоговое окно закрывается.

Когда пользователь кликает по близкой кнопке (X) окна, диалоговое окно отображается, чтобы подтвердить, что пользователь хочет закрыть приложение. Когда пользователь отклоняет диалоговое окно, CloseFcn коллбэк выполняется.

Пример: Приложение, которое Заполняет Древовидные Узлы На основе Файла данных

Это приложение показывает, как динамически добавить древовидные узлы во время выполнения. Три узла больницы существуют в дереве перед выполнением приложения. Однако во время выполнения, приложение добавляет несколько дочерних узлов под каждым именем больницы. Количество дочерних узлов и метки на дочерних узлах определяются содержимым patients.xls электронная таблица.

Когда пользователь кликает по терпеливому имени в дереве, Терпеливые информационные данные об отображениях панели, такие как возраст, пол и состояние здоровья. Приложение хранит изменения в данных в табличном массиве.

Похожие темы