MATLAB Answers

0

Enable/Disable uitabs in uitabgroup, with v2015b

Antoine Luijkx さんによって質問されました 2015 年 10 月 3 日
最新アクティビティ MatMar
さんによって コメントされました 2016 年 9 月 29 日
In a GUI, is there a way to disable/enable a tab created by uitabgroup / uitab.
In a GUI I'm building, I would like to prevent the user from accessing some tabs at earlier stage of the process, and then grant access later when some operations are done in the GUI.
In following example:
fig=figure();
tabgroup=uitabgroup('Parent',fig);
tab1=uitab(tabgroup,'title','title1');
tab2=uitab(tabgroup,'title','title2');
I would like to disable tab2 (something like set(tab2,'Enable','off') would be nice).
It was possible with previous release (I tested with v2013a) using the following sequence:
jtabgroup=getappdata(handle(tabgroup),'JTabbedPane');
jtabgroup.setEnableAt(1,0);
... but I can't make it work using v2015b.
Thank you,
Antoine

  1 件のコメント

Bin Makhashen 2015 年 11 月 20 日
I got the same issue, please any expert help us!

サインイン to comment.

製品

2 件の回答

Lynn
回答者: Lynn
2016 年 4 月 28 日
 採用された回答

To access the underlying Java object, use FindJObj.
Try replacing
jtabgroup=getappdata(handle(tabgroup),'JTabbedPane');
jtabgroup.setEnableAt(1,0);
With
jtabgroup=findjobj(tabgroup);
jtabgroup.setEnableAt(1,0);

  3 件のコメント

Antoine Luijkx 2016 年 4 月 29 日
Thank you, it works!
Just a typo: it's
jtabgroup.setEnabledAt(1,0);
instead of
jtabgroup.setEnableAt(1,0);
Thanks!
Bharath
2016 年 5 月 24 日
Hi,
I tried to apply your solution for my situation where I wanted to disable complete tabgroup. However when I use
jtabgroup=findjobj(tabgroup);
jtabgroup.setEnableAt(false); % also I tried turning enable off for
% for individual tabs using setEnabledAt(1,0)
I get an error saying
Undefined function 'setEnabled' for input arguments of type 'handle.handle'.
It would be extremely helpful if you can help me with this issue. Thanks in advance.
MatMar
2016 年 9 月 29 日
Not sure whether your question is still uptodate:
I am using Matlab 2014b.
handles = findjobj(tabgroup)
handles = findjobj(tabgroup)
returns four handles in my case.
If I use
handles(4).setEnabledAt(index,true)
it works.
Best regards Marius

サインイン to comment.


David Young
回答者: David Young
2015 年 11 月 20 日

A quick thought - how about using the SelectionChangedFcn callback of the uitabgroup object, to select another tab when one of the forbidden tabs is slected?

  1 件のコメント

Antoine Luijkx 2015 年 11 月 21 日
Thank you for proposal. That's indeed a workaround I have in mind. However, that's not fully satisfactory, as user can't see if a tab is enabled or not before clicking on it.

サインイン to comment.



Translated by