Пакет: matlab.ui.componentcontainer
Базовый класс для разработки объектов компонентов пользовательского интерфейса
matlab.ui.componentcontainer.ComponentContainer
- класс, созданный вами для создания собственных классов объектов UI Component. Когда вы задаете подкласс этого базового класса, можно использовать ComponentContainer
свойства и методы для создания объектов компонента. Задайте этот синтаксис в первой линии файла определения класса, чтобы непосредственно наследовать от ComponentContainer
класс, где MyComponent
- имя вашего объекта:
classdef MyComponent < matlab.ui.componentcontainer.ComponentContainer
The matlab.ui.componentcontainer.ComponentContainer
класс является handle
класс.
Abstract | true |
HandleCompatible | true |
Для получения информации об атрибутах класса см. раздел «Атрибуты класса».
BackgroundColor
- Цвет фона[.94 .94 .94]
(по умолчанию) | триплет 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
(false
). Значение 'on'
эквивалентно true
, и 'off'
эквивалентно false
. Таким образом, можно использовать значение этого свойства как логическое значение. Значение сохранено в виде логического значения on/off типа 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
(false
). Значение 'on'
эквивалентно true
, и 'off'
эквивалентно false
. Таким образом, можно использовать значение этого свойства как логическое значение. Значение сохранено в виде логического значения on/off типа matlab.lang.OnOffSwitchState
.
Это свойство определяет, можно ли прерывать выполняемый коллбэк. Существует два состояния коллбэка:
Обратный коллбэк running - это актуальный на данный момент коллбэк.
Обратный коллбэк interrupting - это коллбэк, который пытается прервать текущий коллбэк.
Всякий раз, когда MATLAB вызывает коллбэк, этот коллбэк пытается прервать текущий коллбэк (если он существует). The Interruptible
свойство объекта, имеющего текущий коллбэк, определяет, разрешено ли прерывание.
Значение 'on'
позволяет другим коллбэкам прерывать коллбэки объекта. Прерывание происходит в следующей точке, где MATLAB обрабатывает очередь, например, когда есть drawnow
, figure
, uifigure
, getframe
, waitfor
, или pause
команда.
Если текущий коллбэк содержит одну из этих команд, MATLAB останавливает выполнение коллбэка в этой точке и выполняет прерывание обратного вызова MATLAB возобновляет выполнение текущего коллбэка после завершения прерывания обратного вызова.
Если текущий коллбэк не содержит одну из этих команд, MATLAB завершает выполнение коллбэка без прерывания.
Значение 'off'
блокирует все попытки прерывания. The BusyAction
свойство объекта, имеющего прерывание обратного вызова, определяет, отменяется ли прерывание обратного вызова или помещается в очередь.
Примечание
Прерывание и выполнение коллбэка происходят по-разному в таких ситуациях:
Если прерывание обратного вызова является DeleteFcn
, CloseRequestFcn
или SizeChangedFcn
коллбэк, тогда прерывание происходит независимо от Interruptible
значение свойства.
Если текущий коллбэк выполняющегося в данного момента, waitfor
function, тогда прерывание происходит независимо от Interruptible
значение свойства.
Timer
объекты выполняются в соответствии с расписанием независимо от Interruptible
значение свойства.
Когда происходит прерывание, MATLAB не сохраняет состояние свойств или отображения. Для примера, объект, возвращенный gca
или gcf
команда может измениться при выполнении другого коллбэка.
GetAccess | public |
SetAccess | public |
GetObservable | true |
SetObservable | true |
BusyAction
- постановка в очередь коллбэков'queue'
(по умолчанию) | 'cancel'
Постановка в очередь коллбэков, заданная как 'queue'
или 'cancel'
. The BusyAction
свойство определяет, как MATLAB обрабатывает выполнение прерываний обратного вызова. Существует два состояния коллбэка:
Обратный коллбэк running - это актуальный на данный момент коллбэк.
Обратный коллбэк interrupting - это коллбэк, который пытается прервать текущий коллбэк.
Всякий раз, когда MATLAB вызывает коллбэк, этот коллбэк пытается прервать текущий коллбэк. The Interruptible
свойство объекта, имеющего текущий коллбэк, определяет, разрешено ли прерывание. Если прерывание не разрешено, то BusyAction
свойство объекта, имеющего прерывание обратного вызова, определяет, будет ли оно сброшено или помещено в очередь. Это возможные значения BusyAction
свойство:
'queue'
- помещает прерывание обратного вызова в очередь вызовов, подлежащих обработке после концов обратного коллбэка.
'cancel'
- Не выполняет прерывание обратного вызова.
GetAccess | public |
SetAccess | public |
GetObservable | true |
SetObservable | true |
BeingDeleted
- Статус удаленияСтатус удаления, возвращенный как логическое значение включения/выключения типа matlab.lang.OnOffSwitchState
.
MATLAB устанавливает BeingDeleted
свойство к 'on'
когда DeleteFcn
коллбэк начинает выполняться. The BeingDeleted
свойство остается установленным на 'on'
пока объект компонента не перестанет существовать.
Проверьте значение BeingDeleted
свойство, чтобы убедиться, что объект не будет удален до запроса или изменения.
GetAccess | public |
SetAccess | protected |
GetObservable | true |
SetObservable | true |
Parent
- Родительский контейнерFigure
объект (по умолчанию) | Panel
| объекта Tab
| объекта GridLayout
объектРодительский контейнер компонента, заданный как Figure
, Panel
, Tab
, или GridLayout
объект.
GetAccess | public |
SetAccess | public |
Transient | true |
Dependent | true |
NonCopyable | true |
GetObservable | true |
SetObservable | true |
Children
- дочерние элементы компонента пользовательского интерфейсаGraphicsPlaceholder
массивДочерние компоненты UI, возвращенные как пустые 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
- Пользовательские данные[]
(по умолчанию) | массивПользовательские данные, заданные как любой массив MATLAB. Для примера можно задать скаляр, вектор, матрицу, массив ячеек, символьный массив, таблицу или структуру. Используйте это свойство для хранения произвольных данных на объекте.
Если вы работаете в App Designer, создайте общие или частную собственность в приложении, чтобы делиться данными вместо использования UserData
свойство. Для получения дополнительной информации см. раздел «Обмен данными в приложениях App Designer».
GetAccess | public |
SetAccess | public |
Transient | true |
GetObservable | true |
SetObservable | true |
Определите класс, называемый IPAddressComponent
который создает собственный компонент для ввода четырех значений для формирования IP-адреса.
Чтобы определить класс, создайте файл с именем IPAddressComponent.m
который содержит следующее определение класса с этими функциями:
A Value
общественная собственность, которое хранит IP-адрес.
NumericField
и GridLayout
частная собственность, которые помещают четыре числовых поля редактирования в горизонтальную строку.
A setup
метод, который инициализирует NumericField
и GridLayout
.
Система координат update
метод, который обновляет NumericField
значения при изменении IP-адреса.
A 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
. Для примера компонент UI может определять публичное событие 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'))
matlab.graphics.chartcontainer.ChartContainer
| setup
| update
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.