uitreenode

Создайте древовидный компонент узла

Описание

node = uitreenode создает древовидный узел компонент пользовательского интерфейса в дереве в рамках нового окна рисунка и возвращает TreeNode объект. MATLAB® вызывает uifigure функция, чтобы создать фигуру.

node = uitreenode(parent) создает древовидный узел в заданном родительском контейнере. Родительским контейнером может быть Tree или TreeNode объект.

node = uitreenode(parent,sibling) создает древовидный узел в заданном родительском контейнере, после заданного одноуровневого узла.

node = uitreenode(parent,sibling,location) создает древовидный узел и помещает его после или перед одноуровневым узлом. Задайте location как 'after' или 'before'.

пример

node = uitreenode(___,Name,Value) задает TreeNode значения свойств с помощью одного или нескольких Name,Value парные аргументы. Задайте Name,Value как последний набор аргументов, когда вы используете любой из предыдущих синтаксисов.

Примеры

свернуть все

Создайте дерево, которое содержит родительский узел под названием Sample Data с дочерним узлом под названием Sample 1. Расширьте дерево, чтобы видеть оба узла.

fig = uifigure;
t = uitree(fig);
parent = uitreenode(t,'Text','Sample Data');
child = uitreenode(parent,'Text','Sample 1');
expand(t)

Tree with two nodes.

Создайте приложение, которое отображает имена спортсмена, сгруппированные спортом. Когда пользователь приложения нажимает на имя, данные об отображениях MATLAB о спортсмене.

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

function mytreeapp
    fig = uifigure;
    t = uitree(fig,'Position',[20 20 150 150]);

    % Assign callback in response to node selection
    t.SelectionChangedFcn = @nodechange;

    % First level nodes
    category1 = uitreenode(t,'Text','Runners','NodeData',[]);
    category2 = uitreenode(t,'Text','Cyclists','NodeData',[]);

    % Second level nodes.
    % Node data is age (y), height (m), weight (kg)
    p1 = uitreenode(category1,'Text','Joe','NodeData',[40 1.67 58] );
    p2 = uitreenode(category1,'Text','Linda','NodeData',[49 1.83 90]);
    p3 = uitreenode(category2,'Text','Rajeev','NodeData',[25 1.47 53]);
    p4 = uitreenode(category2,'Text','Anne','NodeData',[88 1.92 100]);

    % Expand the tree
    expand(t);
    
    % Create the function for the SelectionChangedFcn callback
    % When the function is executed, it displays the data of the selected item
    function nodechange(src,event)
        node = event.SelectedNodes;
        display(node.NodeData);
    end
end

Когда пользователь запускает mytreeapp и кликает по узлу в дереве, MATLAB отображает NodeData для того узла.

Создайте дерево, которое заполняет узлы на основе данных в таблице.

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

fig = uifigure;
gl = uigridlayout(fig,[1 2]);
gl.ColumnWidth = {'2x','1x'};

T = readtable('outages.csv');
T = T(1:20,{'Region','OutageTime','Loss','Cause'});
tbl = uitable(gl,'Data',T);

tr = uitree(gl);

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

vars = {'Region','Cause'};

for k1 = 1:length(vars)
    var = vars{k1};
    varnode = uitreenode(tr,'Text',var);
    rows = T{:,var};
    names = categories(categorical(rows));
         
    for k2 = 1:length(names)
        text = names{k2};
        uitreenode(varnode,'Text',text);
    end
end

Расширьте дерево, чтобы видеть все узлы.

expand(tr)

Figure window with a table and a tree. The table contains outage sample data, and the tree contains a node for each region and cause in the table data.

Разработайте узлы в дереве, которое демонстрирует файловую структуру, чтобы визуально отличить различные типы файлов.

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

fig = uifigure('Position',[300 300 350 400]);
t = uitree(fig);

% Parent nodes
n1 = uitreenode(t,'Text','App 1');
n2 = uitreenode(t,'Text','App 2');
n3 = uitreenode(t,'Text','Images');

% Child nodes
n11 = uitreenode(n1,'Text','myapp1.m');
n21 = uitreenode(n2,'Text','myapp2.m');
n22 = uitreenode(n2,'Text','app2callback.m');
n31 = uitreenode(n3,'Text','peppers.png');
n32 = uitreenode(n3,'Text','corn.tif');

expand(t)

Tree with three top-level nodes with text "App 1", "App 2", and "Images", and nested nodes with file names.

Создайте три стиля: один с полужирной толщиной шрифта, один с углом курсивного шрифта, и один с синим цветом шрифта.

dirStyle = uistyle('FontWeight','bold');
imgStyle = uistyle('FontAngle','italic');
mStyle = uistyle('FontColor','blue');

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

addStyle(t,dirStyle,'level',1); 
addStyle(t,mStyle,'node',[n1.Children;n2.Children]);
addStyle(t,imgStyle,'node',[n31 n32]);

Tree UI component. The "App 1", "App 2", and "Images" nodes are bold, the nodes with file names that end in .m are blue, and the image file names are italic.

Создайте контекстное меню с действиями, соответствующими древовидному компоненту. Присвойте контекстное меню древовидным узлам верхнего уровня в дереве.

В фигуре пользовательского интерфейса создайте дерево с четырьмя узлами верхнего уровня и набором вложенных узлов.

fig = uifigure;

tree = uitree(fig,'Position',[20 200 175 100]);

category1 = uitreenode(tree,'Text','Runners');
r1 = uitreenode(category1,'Text','Joe');
r2 = uitreenode(category1,'Text','Linda');

category2 = uitreenode(tree,'Text','Cyclists');
c1 = uitreenode(category2,'Text','Rajeev');

category3 = uitreenode(tree,'Text','Hikers');
h1 = uitreenode(category3,'Text','Jack');

category4 = uitreenode(tree,'Text','Swimmers');
s1 = uitreenode(category4,'Text','Logan');

Tree with four visible nodes: Runners, Cyclists, Hikers, and Swimmers

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

cm = uicontextmenu(fig);
m1 = uimenu(cm,'Text','Expand All');
m2 = uimenu(cm,'Text','Collapse All');
m3 = uimenu(cm,'Text','Scroll To...');

sbm1 = uimenu(m3,'Text','Runners');
sbm2 = uimenu(m3,'Text','Cyclists');
sbm3 = uimenu(m3,'Text','Hikers');
sbm4 = uimenu(m3,'Text','Swimmers');

Затем присвойте контекстное меню древовидным узлам верхнего уровня путем установки ContextMenu свойство каждого узла к ContextMenu объект.

category1.ContextMenu = cm;
category2.ContextMenu = cm;
category3.ContextMenu = cm;
category4.ContextMenu = cm;

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

Tree with a context menu. The context menu is associated with the Cyclists node. The "Scroll To" option is highlighted and it has a submenu with the options Runners, Cyclists, Hikers, and Swimmers.

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

Входные параметры

свернуть все

Родительский объект в виде Tree или TreeNode объект.

Одноуровневый узел в виде TreeNode объект.

Местоположение узла относительно его одноуровневого элемента в виде 'after' или 'before'.

Аргументы name-value

Пример: node = uitreenode(t,'Text','Measurements') создает древовидный узел с меткой, 'Measurements'.

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в одинарных кавычках (' '). Можно задать несколько имен и аргументов пары значения как Name1,Value1,...,NameN,ValueN.

Свойства, перечисленные здесь, являются подмножеством. Для полного списка смотрите TreeNode Properties.

Текст узла в виде вектора символов или строкового скаляра.

Источник значка или файл в виде вектора символов, строкового скаляра или m- n- 3 матрицы изображений истинного цвета. Если вы задаете имя файла, это может быть имя файла образа на пути MATLAB или полном пути к файлу изображения. Если вы планируете совместно использовать приложение с другими, поместите файл изображения на путь MATLAB, чтобы упростить упаковку приложения.

Поддерживаемые форматы изображения включают JPEG, PNG, GIF, SVG или m- n- 3 матрицы изображений истинного цвета. Для получения дополнительной информации о матрицах изображений истинного цвета, смотрите Типы изображения.

Пример: 'icon.png' задает файл значка на пути MATLAB.

Пример: 'C:\Documents\icon.png' задает полный путь к файлу изображения.

Данные об узле в виде массива любого типа. Задайте NodeData совместно использовать данные, важные для узла, в рамках вашего кода приложения.

Введенный в R2017b