How to add multiple styles to my uiTree?
이전 댓글 표시
*** using MATLAB 2021b ***
Hello,
I have a simple uiTree, with several nodes. I'd like to update it's nodes (by deleting existing node and creating new one), and each time after node re-creation I'd like to add style to that specific node.
For some reason its working only one time(!). On the second attemp I get the following warning and node color doesn't change.
Warning: Invalid or deleted object.
Strangely enough, if I try to do the same thing, but add style to the entire tree (NOT to a specifc node), then there is no problem at all.
Please see code below:
%% step 1 - create tree
fig = uifigure;
t1 = uitree(fig);
n1 = uitreenode(t1);
n1.Text = 'Node 1';
n2 = uitreenode(n1);
n3 = uitreenode(n1);
n3.Text = 'Node 3';
n2.Text = 'Node 2';
expand(t1 , 'all')
%% step 2 - re-create main node and add style_1 (first delete)
nodeStyle_1 = uistyle;
nodeStyle_1.FontColor = 'red';
% 1st delete - working
n1.delete
n1 = uitreenode(t1);
n1.Text = 'Node 1a';
n2 = uitreenode(n1);
n2.Text = 'Node 2a';
n3 = uitreenode(n1);
n3.Text = 'Node 3a';
expand(t1 , 'all')
addStyle(t1 , nodeStyle_1 , 'node' , n2)
% addStyle(t1 , nodeStyle_1)
%% step 3 - re-create main node and add style_2 (second delete)
nodeStyle_2 = uistyle;
nodeStyle_2.FontColor = 'yellow';
n1.delete
n1 = uitreenode(t1);
n1.Text = 'Node 1b';
n2 = uitreenode(n1);
n2.Text = 'Node 2b';
n3 = uitreenode(n1);
n3.Text = 'Node 3b';
expand(t1 , 'all')
addStyle(t1 , nodeStyle_2 , 'node' , n2)
% addStyle(t1 , nodeStyle_2)
What am I missing here?
* if there is an alternative way to "update" nodes text, without using the "delete" method I'd like to hear about it. I've tried to make it invisible, by:
n1.HandleVisibility = 'off';
but it doesn't do anything...?! (I was expecting the n1 node to disappear...)
THANKS !!!
채택된 답변
추가 답변 (0개)
카테고리
도움말 센터 및 File Exchange에서 Develop Apps Programmatically에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!