我在我的GUI中使用了matlab中的uitab组。然而,UItabgroup的一个限制是没有启用/禁用功能。我试图通过使用matlab communnity findjObject中的函数来使用其他替代方法
我使用下面的方法来使用上面的函数。
jtabgroup=findjobj(tabgroup);
jtabgroup.setEnableAt(false); % also I tried turning enable off for
% for individual tabs using setEnabledAt(1,0)
字符串
我得到以下错误
Undefined function 'setEnabled' for input arguments of type 'handle.handle'.
型
有人可以帮助我解决这个问题或建议我一些启用/禁用选项卡的替代方法。
5条答案
按热度按时间enyaitl31#
你可以,也应该,使用一个很棒的GUI Layout Toolbox来代替
uitab
。它允许你选择性地禁用开箱即用的标签,更不用说大量其他有用的功能了。FEX上有两个提交,一个用于HG 1(uiextras
包),另一个用于HG 2(uix
包,向后兼容uiextras
接口)。这里是HG 2的例子,你需要将
TabEnables
属性设置为一个'on'
/'off'
值的数组,每个选项卡一个(不是最用户友好的API,但嘿,这比其他任何东西都好)。字符串
x1c 0d1x的数据
另一个建议是求助于纯Java解决方案。这显然是假设你只能将Java组件放置在选项卡中,但是几乎所有的Matlab UI组件,除了轴,都可以很容易地被行为更好、外观更好的Java组件替换。
uxhixvfz2#
不幸的是,正如评论中所报道的,
uitab
没有enable
属性。下面是
iutab
对象的列表:字符串
一个可能的解决方法是启用/禁用属于
uitab
的uicontrols
。您可以获取
uitab
的uicontrols
列表,因为它们的句柄存储在children
属性中。一旦你有了句柄,你就可以将它们的
enable
属性设置为on
或off
。在下面的代码中:
uitabgroup
,其中包含两个iutab
iutab
中,添加了一些uicontrols
,初始enable
状态设置为“off”checkbox
,以启用/禁用两个uitab
中的uicontrols
获取句柄和启用/禁用
uicontrols
函数已直接写为checkbox
callbak
型
x1c 0d1x的数据
希望这对你有帮助。
卡普拉
sqougxex3#
如果你使用的是App Designer或者是基于Web的MATLAB GUI,那么JavaFrame UI的东西就没有效果了,所以基于
findjobj
的选项卡禁用解决方案就不起作用了。有一个类似于findjobj的脚本,用于基于web的GUI,名为
mlapptools
。概括地说,您可以使用此脚本查找具有tab
类并包含带有mwTabHeader
类的span的<div>
,然后使用CSSpointer-events
属性禁止在选项卡上输入。这将锁定用户,使其无法单击选项卡,因此,切换它并激活任何回调函数。我在使用mlapptools导航HTML树时遇到了麻烦,所以我最终使用文本分析工具箱来做这件事。字符串
eanckbw94#
一个更简单的解决方案,对我来说-我有一个方法,递归地寻找一个选项卡中的组件,并设置启用(如果可以启用)。注意:这不会启用整个选项卡,而是内容。为了最好的图形外观,我忽略了某些元素
function setEnableWithChildren(app,component,value)%递归设置所有项目的启用状态
字符串
端
ctehm74n5#
一个简单但有效的解决方案,只使用MATLAB组件,就是使用一个无文本,无色的uilabel作为掩码,放置在标签上。如果标签是Visible,那么标签将不可选择,因为你不能点击标签。如果标签Visible属性是“off”,你可以选择标签。这避免了更改标签,运行回调,然后再更改回来的问题。