Отображение древовидной структуры внутри блока в MATLAB

#user-interface #matlab #treeview #tree #jtree

#пользовательский интерфейс #matlab #просмотр дерева #дерево #jtree

Вопрос:

У меня проблема с отображением древовидной структуры, созданной следующим кодом. Я хочу, чтобы поле дерева соответствовало внутренней части панели, дескриптором которой является hPanLeft. Однако, если я использую нормализованные единицы измерения, я получаю NaN и Inf для свойства Position древовидной структуры. Я не понимаю, что не так.

   function example
    import javax.swing.*
    import javax.swing.tree.*;
    f = figure;
    hPanRight = uipanel('Parent',f,'Units','normalized','Position',...
        [0.5 0 0.5 0.5]);
    hPanLeft = uipanel('Parent',f,'Units','normalized','Position',...
        [0 0.5 0.5 0.5]);
    [tree, container]= uitree('v0');
    set(container,'Parent',hPanLeft);
    set(tree, 'Units', 'normalized');
    set(tree,'Position',[0 0 1 1]);
    get(tree,'Position'),
    root = uitreenode('v0','root','MAIN',[],false);
    Nodo1 = uitreenode('v0','Nodo1','LEAF 1',[],true);
    Nodo2 = uitreenode('v0','Nodo2','LEAF 2',[],true);
    Nodo3 = uitreenode('v0','Nodo3','LEAF 3',[],true);
    root.add(Nodo1);
    root.add(Nodo2);
    root.add(Nodo3);
    treeModel = DefaultTreeModel(root);
    tree.setModel(treeModel);
    jtree = handle(tree.getTree,'CallbackProperties');
    tree.setSelectedNode(root);
end
 

Комментарии:

1. @Amro: Спасибо за редактирование.

Ответ №1:

Вы хотите установить свойство position контейнера, а не дескриптор древовидного объекта:

 [tree,container] = uitree('v0');
set(container, 'Parent',hPanLeft);
set(container, 'Units','normalized', 'Position',[0 0 1 1]);
 

скриншот

Просто помните, что UITREE — это недокументированная функция. Возможно, вы захотите прочитать эту серию статей об этом компоненте.

Комментарии:

1. Спасибо за ваш ответ. Я пытался изменить размер дерева вместо контейнера. Существует ли какая-либо функция или свойство дерева, позволяющее видеть дерево полностью развернутым (т.Е. Видеть Общую структуру при его первом создании без необходимости выбора каждого узла и ведущего)?

2. @jpeji: вам нужно будет вызвать функцию EXPAND . В вашем примере вы можете развернуть корневой узел следующим образом: tree.expand(root);