Пакет: matlab.ui.componentcontainer
Базовый класс для разработки объектов компонента пользовательского интерфейса
matlab.ui.componentcontainer.ComponentContainer
класс, на котором вы основываетесь, чтобы сделать ваши собственные классы объектов Компонента пользовательского интерфейса. Когда вы задаете подкласс этого базового класса, можно использовать ComponentContainer
свойства и методы, чтобы создать ваши объекты компонента пользовательского интерфейса. Задайте этот синтаксис на первой линии вашего файла определения класса, чтобы непосредственно наследоваться ComponentContainer
класс, где MyComponent
имя вашего объекта:
classdef MyComponent < matlab.ui.componentcontainer.ComponentContainer
matlab.ui.componentcontainer.ComponentContainer
классом является handle
класс.
Abstract | true |
ConstructOnLoad | true |
HandleCompatible | true |
Для получения информации об атрибутах класса см. Атрибуты класса.
BackgroundColor
BackgroundColor
(значение по умолчанию) | триплет RGB | шестнадцатеричный цветовой код | 'r'
| 'g'
| 'b'
| ...Цвет фона в виде триплета RGB, шестнадцатеричного цветового кода или одного из перечисленных в таблице параметров цвета.
Триплеты RGB и шестнадцатеричные цветовые коды полезны для определения пользовательских цветов.
Триплет RGB представляет собой трехэлементный вектор-строку, элементы которого определяют интенсивность красных, зеленых и синих компонентов цвета. Интенсивность должна быть в области значений [0,1]
; например, [0.4 0.6 0.7]
.
Шестнадцатеричный цветовой код является вектором символов или строковым скаляром, который запускается с символа хеша (#
) сопровождаемый тремя или шестью шестнадцатеричными цифрами, которые могут лежать в диапазоне от 0
к F
. Значения не являются чувствительными к регистру. Таким образом, цветовые коды '#FF8800'
, '#ff8800'
, '#F80'
, и '#f80'
эквивалентны.
Кроме того, вы можете задать имена некоторых простых цветов. Эта таблица приводит опции именованного цвета, эквивалентные триплеты RGB и шестнадцатеричные цветовые коды.
Название цвета | Краткое название | Триплет RGB | Шестнадцатеричный цветовой код | Внешний вид |
---|---|---|---|---|
'red' | 'r' | [1 0 0]
| '#FF0000' |
|
'green' | 'g' | [0 1 0]
| '#00FF00' |
|
'blue' | 'b' | [0 0 1]
| '#0000FF' |
|
'cyan'
| 'c' | [0 1 1]
| '#00FFFF' |
|
'magenta' | 'm' | [1 0 1]
| '#FF00FF' |
|
'yellow' | 'y' | [1 1 0]
| '#FFFF00' |
|
'black' | 'k' | [0 0 0]
| '#000000'
|
|
'white' | 'w' | [1 1 1]
| '#FFFFFF' |
|
Вот являются триплеты RGB и шестнадцатеричные цветовые коды для цветов по умолчанию MATLAB® использование во многих типах графиков.
Триплет RGB | Шестнадцатеричный цветовой код | Внешний вид |
---|---|---|
[0 0.4470 0.7410]
| '#0072BD' |
|
[0.8500 0.3250 0.0980]
| '#D95319' |
|
[0.9290 0.6940 0.1250]
| '#EDB120' |
|
[0.4940 0.1840 0.5560]
| '#7E2F8E' |
|
[0.4660 0.6740 0.1880]
| '#77AC30' |
|
[0.3010 0.7450 0.9330]
| '#4DBEEE' |
|
[0.6350 0.0780 0.1840]
| '#A2142F' |
|
GetAccess | public |
SetAccess | public |
Dependent | true |
GetObservable | true |
SetObservable | true |
Visible
— Состояние видимости'on'
(значение по умолчанию) | логическое значение включения - выключенияСостояние видимости в виде 'on'
или 'off'
, или как числовой или логический 1
TRUE
) или 0
ложь
). Значение 'on'
эквивалентно true
, и 'off'
эквивалентно false
. Таким образом можно использовать значение этого свойства как логическое значение. Значение хранится как логическое значение включения - выключения типа matlab.lang.OnOffSwitchState
.
'on'
— Отобразите объект.
'off'
— Скройте объект, не удаляя его. Все еще можно получить доступ к свойствам невидимого компонента пользовательского интерфейса.
Чтобы заставить ваше приложение запуститься быстрее, установите Visible
свойство к 'off'
для всех компонентов, которые не должны появляться при запуске.
Изменение размера невидимого контейнера инициировало SizeChangedFcn
коллбэк, когда это становится видимым.
Изменение Visible
свойство контейнера не изменяет значения Visible
свойства дочерних компонентов. Это верно даже при том, что сокрытие контейнера заставляет дочерние компоненты быть скрытыми.
GetAccess | public |
SetAccess | public |
Dependent | true |
GetObservable | true |
SetObservable | true |
ContextMenu
— Контекстное менюGraphicsPlaceholder
массив (значение по умолчанию) | ContextMenu
объектКонтекстное меню в виде ContextMenu
объект создал использование uicontextmenu
функция. Используйте это свойство отобразить контекстное меню, когда вы щелкнете правой кнопкой по компоненту.
GetAccess | public |
SetAccess | public |
NonCopyable | true |
Transient | true |
GetObservable | true |
SetObservable | true |
Position
— Размер компонента пользовательского интерфейса и местоположение, исключая поля[left bottom width height]
Размер компонента пользовательского интерфейса и местоположение, исключая поля для художественных оформлений, таких как подписи по осям и отметки деления. Задайте это свойство как вектор из формы [left bottom width height]
.
Примечание
Установка этого свойства не оказывает влияния, когда родительским элементом компонента пользовательского интерфейса является GridLayout
.
GetAccess | public |
SetAccess | public |
Dependent | true |
Units
— Единицы измерения'pixels'
(значение по умолчанию)Единицы измерения в виде 'pixels'
.
GetAccess | public |
SetAccess | public |
Dependent | true |
GetObservable | true |
SetObservable | true |
Layout
— Параметры макетаLayoutOptions
массив (значение по умолчанию) | GridLayoutOptions
объектПараметры макета в виде GridLayoutOptions
объект. Это свойство задает опции для компонентов, которые являются дочерними элементами контейнеров макетов сетки. Если компонент не является дочерним элементом контейнера макетов сетки (например, это - дочерний элемент фигуры или панели), то это свойство пусто и не оказывает влияния. Однако, если компонент является дочерним элементом контейнера макетов сетки, можно поместить компонент в желаемую строку и столбец сетки путем установки Row
и Column
свойства на GridLayoutOptions
объект.
Например, этот код помещает компонент изображения в третью строку и второй столбец ее родительской сетки.
g = uigridlayout([4 3]); im = uiimage(g); im.ImageSource = 'peppers.png'; im.ScaleMethod = 'fill'; im.Layout.Row = 3; im.Layout.Column = 2;
Чтобы заставить изображение охватить несколько строк или столбцов, задайте Row
или Column
свойство как двухэлементный вектор. Например, это изображение охватывает столбцы 2
через 3
.
im.Layout.Column = [2 3];
GetAccess | public |
SetAccess | public |
Interruptible
— Прерывание коллбэка'on'
(значение по умолчанию) | логическое значение включения - выключенияПрерывание коллбэка в виде 'on'
или 'off'
, или как числовой или логический 1
TRUE
) или 0
ложь
). Значение 'on'
эквивалентно true
, и 'off'
эквивалентно false
. Таким образом можно использовать значение этого свойства как логическое значение. Значение хранится как логическое значение включения - выключения типа matlab.lang.OnOffSwitchState
.
Это свойство определяет, может ли рабочий коллбэк быть прерван. Существует два состояния обратного вызова:
Выполняемый обратный вызов — это актуальный на данный момент обратный вызов.
Прерывающий обратный вызов — это обратный вызов, который пытается прервать текущий обратный вызов.
Каждый раз, когда MATLAB вызывает обратный вызов, этот обратный вызов пытается прервать текущий обратный вызов (если он существует). Interruptible
свойство объекта, владеющего рабочим коллбэком, определяет, позволено ли прерывание.
Значение 'on'
позволяет другим коллбэкам прерывать коллбэки объекта. Прерывание происходит на следующем этапе, где MATLAB обрабатывает очередь, такой как тогда, когда существует a drawnow
, figure
, uifigure
, getframe
, waitfor
, или pause
команда.
Если рабочий коллбэк содержит одну из тех команд, то MATLAB останавливает выполнение коллбэка в той точке и выполняет прерывание обратного вызова. MATLAB возобновляет выполнение обратного вызова при завершении прерывания.
Если рабочий коллбэк не содержит одну из тех команд, то MATLAB закончил выполнять коллбэк без прерывания.
Значение 'off'
блоки все попытки прерывания. BusyAction
свойство объекта, владеющего прерыванием обратного вызова, определяет, отбрасывается ли прерывание обратного вызова или помещается в очередь.
Примечание
Прерывание и выполнение обратного вызова происходят по-разному в таких ситуациях:
Если прерыванием обратного вызова является DeleteFcn
CloseRequestFcn
или SizeChangedFcn
коллбэк, затем прерывание происходит независимо от Interruptible
значение свойства.
Если рабочий коллбэк является выполняющимся в данным моментом waitfor
функция, затем прерывание происходит независимо от Interruptible
значение свойства.
Timer
объекты выполняются согласно расписанию независимо от Interruptible
значение свойства.
Когда происходит прерывание, MATLAB не сохраняет состояние свойств или изображения. Например, объект, возвращенный gca
или gcf
команда может измениться, когда другой коллбэк выполняется.
GetAccess | public |
SetAccess | public |
GetObservable | true |
SetObservable | true |
BusyAction
— Постановка в очередь коллбэка'queue'
(значение по умолчанию) | 'cancel'
Постановка в очередь коллбэка в виде 'queue'
или 'cancel'
. BusyAction
свойство определяет, как MATLAB обрабатывает выполнение прерываний обратного вызова. Существует два состояния обратного вызова:
Выполняемый обратный вызов — это актуальный на данный момент обратный вызов.
Прерывающий обратный вызов — это обратный вызов, который пытается прервать текущий обратный вызов.
Каждый раз, когда MATLAB инициирует обратный вызов, этот обратный вызов пытается прервать текущий обратный вызов. Interruptible
свойство объекта, владеющего рабочим коллбэком, определяет, разрешено ли прерывание. Если прерывание не разрешено, то BusyAction
свойство объекта, владеющего прерыванием обратного вызова, определяет, отбрасывается ли это или вставило очередь. Это возможные значения BusyAction
свойство:
'queue'
— Помещает прерывание обратного вызова в очередь, чтобы быть обработанным после рабочего выполнения концов коллбэка.
'cancel'
— Не выполняет прерывание обратного вызова.
GetAccess | public |
SetAccess | public |
GetObservable | true |
SetObservable | true |
BeingDeleted
— Состояние DeletionСостояние Deletion, возвращенное как логическое значение включения - выключения типа matlab.lang.OnOffSwitchState
.
MATLAB устанавливает BeingDeleted
свойство к 'on'
когда DeleteFcn
коллбэк начинает выполнение. BeingDeleted
свойство остается установленным в 'on'
пока объект компонента больше не существует.
Проверяйте значение BeingDeleted
свойство проверить, что объект не собирается быть удаленным прежде, чем запросить или изменить его.
GetAccess | public |
SetAccess | protected |
GetObservable | true |
SetObservable | true |
Parent
— Родительский контейнерFigure
объект (значение по умолчанию) | Panel
возразите | Tab
возразите | GridLayout
объектРодительский контейнер компонента в виде Figure
Панель
, Tab
, или GridLayout
объект.
GetAccess | public |
SetAccess | public |
Transient | true |
Dependent | true |
NonCopyable | true |
GetObservable | true |
SetObservable | true |
Children
— Дочерние элементы компонента пользовательского интерфейсаGraphicsPlaceholder
массивДочерние элементы компонента пользовательского интерфейса, возвращенные как пустой GraphicsPlaceholder
массив. Пользовательские компоненты пользовательского интерфейса не имеют никаких дочерних элементов. Установка этого свойства не оказывает влияния.
GetAccess | public |
SetAccess | public |
Transient | true |
Dependent | true |
NonCopyable | true |
HandleVisibility
— Видимость указателя на объект'on'
(значение по умолчанию) | 'callback'
| 'off'
Видимость указателя на объект в виде 'on'
'callback'
, или 'off'
.
Это свойство контролирует видимость объекта в списке дочерних элементов его родителя. Когда объект не отображается в списке дочерних элементов его родителя, он не возвращается с помощью функций, которые получают объекты, просматривая иерархию объектов или запрашивая свойства. Эти функции включают get
, findobj
, clf
, и close
Объекты действительны, даже если они не видны. Если вы можете получить доступ к объекту, вы можете установить его, получить его свойства и передать его любой функции, которая работает с объектами.
Значение HandleVisibility | Описание |
---|---|
'on' | Объект всегда виден. |
'callback' | Объект отображается из коллбэков или функций, вызванных коллбэками, но не из функций, вызванных из командной строки. Эта опция блокирует доступ к объекту в командной строке, но позволяет обратным вызовам обращаться к нему. |
'off' | Объект невидим в любое время. Эта опция предназначена для предотвращения непреднамеренных изменений в пользовательском интерфейсе другой функцией. Установите HandleVisibility к 'off' временно скрыть объект во время выполнения этой функции. |
GetAccess | public |
SetAccess | public |
Dependent | true |
GetObservable | true |
SetObservable | true |
Type
— Тип объекта компонента пользовательского интерфейсаТип объекта компонента пользовательского интерфейса, возвращенного как вектор символов, содержащий имя компонента.
GetAccess | public |
SetAccess | protected |
NonCopyable | true |
Transient | true |
Tag
— Идентификатор объекта''
(значение по умолчанию) | вектор символов | строковый скалярИдентификатор объекта в виде вектора символов или строкового скаляра. Можно задать уникальный Tag
значение, чтобы служить идентификатором для объекта. Когда вам нужен доступ к объекту в другом месте в вашем коде, можно использовать findobj
функционируйте, чтобы искать основанное на объектах на Tag
значение.
GetAccess | public |
SetAccess | public |
Dependent | true |
GetObservable | true |
SetObservable | true |
UserData
UserData []
(значение по умолчанию) | массивПользовательские данные в виде любого массива MATLAB. Например, можно задать скаляр, вектор, матрицу, массив ячеек, символьный массив, таблицу или структуру. Используйте это свойство хранить произвольные данные на объекте.
Если вы работаете в App Designer, создаете публичные или частные свойства в приложении, чтобы осуществлять обмен данными вместо того, чтобы использовать UserData
свойство. Для получения дополнительной информации смотрите, Осуществляют обмен данными В рамках Приложений App Designer.
GetAccess | public |
SetAccess | public |
Transient | true |
GetObservable | true |
SetObservable | true |
Задайте класс под названием IPAddressComponent
это создает собственный компонент для того, чтобы ввести четыре значения, чтобы сформировать IP-адрес.
Чтобы задать класс, создайте файл под названием IPAddressComponent.m
это содержит следующее определение класса с этими функциями:
Value
общественная собственность, которая хранит IP-адрес.
NumericField
и GridLayout
частные свойства, которые помещают четыре числовых поля редактирования в горизонтальную строку.
setup
метод, который инициализирует NumericField
и GridLayout
.
update
метод, который обновляет NumericField
значения, когда IP-адрес изменяется.
handleNewValue
метод, который устанавливает Value
свойство на основе значений 4 числовых полей редактирования.
classdef IPAddressComponent < matlab.ui.componentcontainer.ComponentContainer % IPAddressComponent a set of 4 edit fields for IP Address input properties Value (1,4) {mustBeNonnegative, mustBeInteger, mustBeLessThanOrEqual(Value, 255)} = [192 168 1 2]; end events (HasCallbackProperty, NotifyAccess = protected) ValueChanged % ValueChangedFcn callback property will be generated end properties (Access = private, Transient, NonCopyable) NumericField (1,4) matlab.ui.control.NumericEditField GridLayout matlab.ui.container.GridLayout end methods (Access=protected) function setup(obj) % Set the initial position of this component obj.Position = [100 100 150 22]; % Layout obj.GridLayout = uigridlayout(obj,[1,5], ... 'RowHeight',{22},'ColumnWidth',{30,30,30,30,22},... 'Padding',0,'ColumnSpacing',2); % Building blocks for k = 1:4 obj.NumericField(k) = uieditfield(obj.GridLayout, 'numeric',... 'Limits', [0 255], 'RoundFractionalValues', true, ... 'FontName', 'Courier New', 'FontWeight', 'bold', ... 'ValueChangedFcn',@(o,e) obj.handleNewValue()); end end function update(obj) % Update view for k = 1:4 obj.NumericField(k).Value = obj.Value(k); end end end methods (Access=private) function handleNewValue(obj) obj.Value = [obj.NumericField.Value]; % Execute the event listeners and the ValueChangedFcn callback property notify(obj,'ValueChanged'); end end end
Затем создайте компонент путем вызова IPAddressComponent
метод конструктора, который обеспечивается ComponentContainer
класс, и возвращает объект как h
. Задайте функцию, которая отображает новый IP-адрес в Командном окне, когда значение компонента изменяется.
h = IPAddressComponent;
h.ValueChangedFcn = @(o,e) disp(['Value changed to: ', num2str(h.Value)]);
Введите IP-адрес 192.168.1.10
в поля редактирования. MATLAB отображает обновленный IP-адрес в Командном окне.
При определении класса опционально можно добавить блок для событий, которые запускает компонент пользовательского интерфейса.
Чтобы создать такой блок события, дайте вашему классу events
блокируйтесь с HasCallbackProperty
атрибут. Когда вы делаете это, MATLAB создает общественную собственность для каждого события в блоке. Общественная собственность хранит пользователя, предоставленного коллбэку, чтобы выполниться, когда событие стреляет. Имя общественной собственности является именем события, добавленного с буквами Fcn
. Например, пользовательский интерфейс сила компонента задает общественное мероприятие ValueChanged
и сгенерируйте соответствующую общественную собственность ValueChangedFcn
. Используйте notify
метод, чтобы запустить событие и выполнить коллбэк в свойстве.
Например, вот блок события для компонента пользовательского интерфейса, который позволяет пользователю выбирать значение цвета.
events (HasCallbackProperty, NotifyAccess = protected) ValueChanged end
notify
метод, чтобы запустить ValueChanged
событие и выполняет коллбэк в ValueChangedFcn
свойство, когда пользователь выбирает значение цвета.function getColorFromUser(obj) c = uisetcolor(obj.Value); if (isscalar(c) && (c == 0)) return; end % Update the Value property oldValue = obj.Value; obj.Value = c; % Execute user callbacks and listeners notify(obj,'ValueChanged'); end
f = uifigure; c = ColorSelector(f,'ValueChangedFcn',@(o,e)disp('Changed'))
setup
| update
| matlab.graphics.chartcontainer.ChartContainer
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.