图片缩略图

小部件工具箱-兼容性支持金宝app

版本1.4.0 (737kb) 罗宾杜松子酒
R2017a-R2020a中金宝app构建的widget工具箱内容的兼容性支持
4.9
32评级

40下载

更新2020年11月24日

从GitHub

查看版本历史

在GitHub上查看许可证

编者按:

此版本的widget工具箱仅支持“现有”应用程序的向前兼容性。金宝app如果您正在MATLAB R2020b或更高版本中构建新的应用程序,请使用小部件工具箱- MATLAB应用程序构建组件

警告-此版本的widget工具箱仅支持“现有”应用程序的向前兼容性。金宝app如果您正在MATLAB R2020b或更高版本中构建新的应用程序,请使用新的“widget工具箱- MATLAB应用程序构建组件”:

//www.tatmou.com/matlabcentral/fileexchange/83328-widgets-toolbox-matlab-app-building-components
https://github.com/mathworks/widgets-toolbox-uifigures

从MATLAB R2020b开始,大多数现有的应用程序都依赖于Widgets工具箱(uiw。* package)可以从传统的图形窗口(基于java)迁移到现代UI图(uifigure)。将现有widget工具箱内容迁移到ufigu中存在已知的限制和不兼容性。为此,请参阅《入门指南》末尾的发布说明,并开始测试将应用迁移到ufig中。

建议您将其作为工具箱安装,以自动设置适当的MATLAB和Java路径。如果手动安装,请查看入门指南中的安装说明。

需要帮助升级业务关键型应用程序?MathWorks咨询可以帮助://www.tatmou.com/services/consulting/proven-金宝搏官方网站solutions/software-upgrade-service.html

引用作为

罗宾·杰基(2021)。小部件工具箱-兼容性支持金宝appGitHub (https://github.com/mathworks/widgets-toolbox-legacy/releases/tag/1.4.0)。检索

意见及评分(161

罗宾杜松子酒

@Roman -我给你发了一条更长的消息,但由于某种原因,它还没有出现。请随时联系我直接点击我的名字上面,以便我们可以调试这些。

罗宾杜松子酒

在此期间,您现在可以通过点击下载按钮上方的“查看版本历史”来获取所需的旧版本。

罗马Muller-Hainbach

很抱歉,我不得不报告1.4版的更多错误。我的许多应用程序都停止了正常工作。

下一个发生在uiw.widget.Tree/createJavaComponent:217。
通过调用uiw。widget。树Node/createJavaComponent directly instead of uiw.widget.TreeNode/createComponent on the root node, that is created here, the uiw.widget.TreeNode/IsConstructed property never gets set to true.
否则这将发生在uiw.widget.TreeNode/createComponent:98中。

因此,我不能设置我的树根节点的图标。它运行到ui。widget中。树Node/setIcon:324, where it says "Do nothing".

我不知道你是否有适合这种情况的测试用例,但是很多错误都来自于这种延迟组件创建机制,或者与“isconstruct”属性有关。我希望你能解决这些问题。

罗马Muller-Hainbach

实际上,即使是这样,列标题也是空的:

uiw.widget。表格('Parent',gcf, 'ColumnName',{'MyColumn'}, 'Data',{'A'})

罗马Muller-Hainbach

另一个问题:

TBL = uiw.widget。表格('ColumnName',{'MyColumn'}, 'Data',{'A'});
资源描述。父= gcf;

可见表控件的列标题为空,尽管仍然设置了“ColumnName”属性。

当小部件配置为unparent时,表控件没有正确初始化。

请修复uiw.widget.Table/set中的拼写错误。ColumnMaxWidth,行1445。谢谢你!

罗宾杜松子酒

你好,Widgets工具箱用户,
在Widgets Toolbox 1.4版本中,我启用了基于web技术的MATLAB中的现代ui图支持。金宝appMathWorks之前宣布将在未来的版本中删除javacomponent:
//www.tatmou.com/下载188bet金宝搏products/matlab/app-designer/java-swing-alternatives.html
我的目标是让您通过Widgets Toolbox组件(特别是表和树)使用的现有Java继续工作,并对代码进行最小的更改。这些小部件本质上包装了Java代码,这样您就可以用MATLAB语言创建组件,而不需要直接接触Java部分。如果你不做任何改变,你的应用程序应该继续工作,就像它以前在未来的MATLAB版本中一样,直到javacomponent被删除。
从R2020b中的Widgets Toolbox的这个版本开始,如果放在ufige中,包含java的小部件将创建等效的版本(例如uitree / uitree)。它们将仅限于这些组件的功能,但是小部件包装器的属性和方法将适当地传递给这些组件,以最大限度地减少您需要对代码进行的任何更改。

我还创建了一个单独的“小部件工具箱- MATLAB应用程序构建组件”,其中包含新内容供您在ufige中创建*新*内容时使用。这个新工具箱充分利用了R2020b中引入的UI组件开发功能:
//www.tatmou.com/help/matlab/creating_guis/develop-classes-of-ui-component-objects.html

您会注意到,我已将原来的Widgets工具箱重命名为“Compatibility Support”,以避免新旧内容之间的混淆。金宝app一如既往,我欢迎你在评论中反馈,或者你可以通过点击我的名字与我联系。

谢谢大家!
罗宾

罗宾杜松子酒

@Alberto -一些选项:
1.在UserData属性中放置一个结构、单元格或对象(这是我最推荐的)
2.使用Treenode隐藏的“Value”属性
3.创建一个TreeNode的子类(我不能100%确定这是否有效或有任何副作用)。

阿尔贝托公爵夫人

亲爱的罗宾,

是否有可能在不编辑TreeNode.m的情况下添加属性到TreeNode类?
我想保存一个更多的值,我需要另一个属性(除了名称,TooltipString, Parent, UserData, ecc..)来存储它。

在我的脚本中,在我创建TreeNode类的地方,我尝试使用“addprop”函数,但它失败了,而当我使用这个函数与树类时,我没有错误,我猜是因为他们从不同的对象继承方法。

您对使用TreeNode类来添加自定义属性的正确方法有什么建议吗?

致以最亲切的问候
阿尔贝托。

罗宾杜松子酒

@Alberto,很高兴听到它解决了这个问题!是的,您需要显式地在部署项目中包含Java .jar文件和可能的图标图像文件。我相信文档里有说明。

亲爱的罗宾,

几周前,我在“用户界面的树控件”一节中写过文章。
现在,有了这个小部件工具箱,上下文菜单的位置没有错误首先,非常感谢。

现在我面临着一个问题,使用我的应用程序与Matlab运行时,我猜是因为工具箱不包括在内。
有没有可能包括你的工具箱?它是由Mat金宝applab编译器支持吗?

罗宾法国

@Robyn jackie -谢谢!

罗宾杜松子酒

uiw.mix . haseditabletext有一个bug。从第49行开始的代码块应该如下:

也处理“非活动”状态
如果strcmpi (obj.Enable,“了”)
集(obj.hTextFields,“使”,“关闭”);
elseif strcmpi(obj. enable,'on') && strcmpi(obj. enable,'on')TextEditable,“了”)
集(obj.hTextFields,“使”,“不活跃”);
其他的
集(obj.hTextFields”,使“obj.Enable);
结束

我将在下一个版本中修复这个问题。

罗宾法国

@Robyn jackie,谢谢你的回复!我尝试了你的建议(我想我以前实际上尝试过),但它似乎“灰色”的文本框。我想为bg的颜色是白色。我遗漏了什么吗?

罗宾杜松子酒

@Robin -你可以使用Enable和TextEditable属性的组合来实现这一点。这就是我如何使uiw.widget.Popup具有非活动状态,即Enable = 'on'和TextEditable = 'off'。

罗宾法国

@Robyn Jackey,我最近一直在开发一个选择器,沿着' uiw.widgets。`,它启动一个自定义接口,而不是uigetfile/uiputfile。在检查中,直接继承' ui .abstract '似乎是合适的。EditableTextWithButton`, as I didn't need the additional properties added by folder and file selector classes.

这一切都很好,除了一个问题,影响我的新类和' uiw.widgets。FileSelector '(我也在使用)

在构造新类时,我无法将“TextEnable”设置为“inactive”。可用的选项是' on '或' off '。我想设置为“非活动”,以便编辑框保留启用的外观,但不允许手动编辑(只允许通过浏览按钮更新)。在类的uiw.mixin中。HasEditableText '允许的选项是' on '和' off '(在属性验证和set方法中),正如预期的那样。但是,在' onEnableChanged '中有适当的代码来处理'inactive'。

我临时更新了属性和字符串验证,以允许' inactive ',所有工作都如预期的那样。

我的问题是,我猜,属性验证是否过于热心,是否还没有放松到足以让“onEnableChanged”逻辑完全发挥作用,还是由于单独的问题而被删除?

最终,我能够在我的类中通过硬强制在构造函数的末尾启用“非活动”的文本来修复。但是在实例化对象时,如果能够将此设置为nv pair参数的一部分就更好了。

请让我知道你的想法,或者如果你需要进一步澄清这个问题。

谢谢!

罗宾杜松子酒

@pk68,我刚说到你的问题。在注释掉提到的行之后,我没有发现你提到的“弹出编辑器”类的问题。你指的是“popuplist”列格式(弹出式/下拉式,你可以输入或选择多个条目)?你能举个例子吗?

不幸的是,popuplist列格式并不是我们在app designer / uifigfigure中所拥有的,我也不认为这是我们目前的计划。所以如果你想在不久的将来将你的应用程序迁移到ufigure,这种格式可能不会延续。

迈克赛迪

罗宾杜松子酒

谢谢你的反馈!我目前正在开发一个更新版本,可以使用Widgets Toolbox将您的应用程序移动到R2020b的ufige中。会有一些限制,特别是Java组件(表/树)。我基本上计划让他们通过内置的uitree / uitable时,放置在一个ufigures。

内森埃林森

我喜欢这个工具箱!有没有计划将其更新到应用程序设计器框架?可能是一个巨大的努力,但这个工具箱的大部分可能会失败,因为Matlab转换:(特别是当Matlab不再让用户访问JFrame时)

罗宾杜松子酒

@Eivind,好吧,很高兴操作系统更新修复了这个问题。我不确定双击的问题,但在未来的版本中,当不再使用Java时,它应该会消失。

Hennestad大船

评论之前的帖子:
巧合的是,我更新了我的操作系统(macOS Catalina版本:10.15.5 (19F101)),现在教皇菜单出现在所有屏幕的正确位置。

Hennestad大船

你好,
我遇到过一个完全不起眼,但仍然很痒的虫子。
我正在使用EditableTextWithHistory小部件,它工作得很好。然而,当我将应用程序移到辅助屏幕上时,小部件弹出菜单总是出现在该屏幕底部的固定位置。
还有一件事,我不知道这是否符合预期。
当我双击小部件时,它会在小部件History属性的项目列表中选择第二个项目。在此过程中不会显示弹出式菜单。

致以最好的问候,艾文德

Hennestad大船

还有一件事,我不知道这是否符合预期。
当我双击小部件时,它会在小部件History属性的项目列表中选择第二个项目。在此过程中不会显示弹出式菜单。

罗宾杜松子酒

@Kiron -我希望它能在接下来的几个版本中继续发挥作用。我一直致力于兼容性更新,将允许您切换您现有的应用程序从图形到ufigure最小的代码更改所需的。我的目标是R2020b的兼容性更新。Widgets工具箱树、表格和可编辑弹出组件的大部分功能现在都可以在uifigfigure版本中使用,我正在研究一个“传递”解决方案,以便在小部件组件被放置到uifigfigure中时使用这些功能。ufigure中附加功能的最佳解决方案是新的uihtml组件。

目睹了Mateti

@Robin,关于“警告:JAVACOMPONENT将在未来的版本中删除”的工作有任何更新吗?Matlab基于uifigfigure的应用程序仍然缺乏这个工具箱所提供的功能,但我不希望新版本突然破坏这个工具箱,从而破坏我的应用程序。

罗宾杜松子酒

@pk68 -抱歉耽搁了。我马上去看看。

pk68

Robyn,如果表中的任何列是弹出编辑器类,那么这个更改会破坏它。

pk68

罗宾,把这几行注释掉了

罗宾杜松子酒

@pk68,这可能是由于优化,相同类型的表列重用同一个Java编辑器。你能不能试着注释掉uiw. enumt . tablecolumnformat的294行和311-313行。如果它工作,我将推动修复在下一个版本。

pk68

罗宾,我有两张桌子的时候遇到了点问题。在一个表中,我可以更改多个单元格值,当我按下enter键时,值更新正确。然而,对于2个表,当我更改单个单元格的值,然后单击另一个表,而不按返回键更改值时,两个表显示相同的值。有什么解决办法吗?

罗宾杜松子酒

可以更改单元格中HTML的对齐方式。我还没有专门测试过。

PGrant

好的。感谢罗宾。我可以左/中/右对齐个别单元格(或列)时,他们的字符/字符串?

罗宾杜松子酒

@PGrant -不幸的是,唯一真正的选择是将列格式化为文本,然后将数字转换为您想要的文本格式。有人要求对新的uitable (appdesigner/ uifigfigure)进行改进,但目前还不可用。

PGrant

可以提供一个例子,如何应用数字格式的个别单元格(不是列),请?
提前谢谢!

罗宾杜松子酒

大卫,不客气!

大卫

Robyn,创建一个子类就像一个魔法!谢谢你的帮助和建议!

罗宾杜松子酒

David,处理这个最好的方法是创建uiw。model。preferences的子类并添加标准属性。然后在应用程序的构造函数中将首选项设置为正确的类型,如下所示:

%的构造函数
函数obj = App(varargin)

%使用自定义首选项类
myPrefs = myPackageName.Preferences();

调用超类构造函数
obj@uiw.abstract.MultiSessionApp(“偏好”,myPrefs);

大卫

Robyn,改变工具箱中的Preferences类文件,为RecentSessionPaths属性创建一个默认值,允许一个在关闭/重新打开我的应用程序之间保留,但同样的改变并不适用于我定义的自定义首选项。似乎如果首选项没有在工具箱中的Preferences类中定义,那么它们将被创建为“动态属性”,不允许有默认值(根据“meta.dynamicProperty”的文档)。因为它们不能有默认值,所以它们永远不能满足这个要求,并且总是被忽略。我已经尝试删除对HasDefault为真的需求,但后来当代码试图访问不存在的“动态属性”的默认值时,我就遇到了问题。任何建议吗?

罗宾杜松子酒

@David,看起来你的解决方案的评论没有发布,但无论如何,正如你发现的,首选项可能需要有一个默认值设置。听起来你找到了解决办法,但如果还有问题请告诉我。

大卫

回复我的上一个评论:我错了,RecentSessionPaths是在Preferences类中定义的,而不是SessionManagement。

大卫

Robyn,我的开发机器和运行已编译应用程序的机器上都安装了MATLAB。我已经打开matlabprefs。在编译的机器上的mat文件,它看起来只有位置和LastFolder首选项被保存为编译的应用程序,所以最近的文件列表SingleSessionApp类创建和自定义首选项,我已经定义被忽略。修复会像添加自定义首选项到matlabprefs一样简单。垫结构和重新保存它回到垫文件?

罗宾杜松子酒

David,在安装了MATLAB和没有安装MATLAB的机器上,行为可能会有所不同。如果在您的计算机上,每次都可能从MATLAB安装中复制它们。//www.tatmou.com/matlabcentral/answers/91459-why-are-my-preference-files-included-in-my-stand-alone-application-created-with-matlab-compiler-4-9
我不确定它是否能在没有安装MATLAB的机器上工作。你测试过吗?如果它不起作用,我会尝试获得更多的信息-让我知道。

大卫

Robyn,我看到一些不一致的mixin HasPreferences类编译应用程序,有时首选项不保留后关闭应用程序,重新打开它。不过,在运行未编译的代码时,我没有看到这个问题,所以我不确定我所看到的是编译器和addpref/getpref之间的其他症状,还是特定于这个工具箱对这些函数的使用。

朱利安attiogbe

@Robyn:谢谢,它似乎工作得很好,运行2个演示文件时没有错误消息。
我可以从这个开始,D

罗宾杜松子酒

@Julien -对于那个演示,你还需要安装GUI布局工具箱。对于Java错误,您最好将其作为工具箱或从MATLAB Add-Ons工具安装。如果需要手动安装,需要手动将Java .jar文件添加到Java路径下。

朱利安attiogbe

你好,我很期待使用这个工具箱,但我不能让它工作。我在2019b上,解压缩文件并安装工具箱。
在GettingStarted。mlx,我得到这个错误消息:
无法解析名称uix.HBoxFlex。(14)行

在demoTree。mlx,我得到这个消息:
使用javaObjectEDT时出错
在Java类路径中不能找到任何类com.mathworks.consulting.widgets.tree.TreeNode

我已经阅读了下面所有的信息,但我仍然有问题…

内森埃林森

伟大的工具箱!不过,如果你要做任何复杂的事情,我建议增加你的java堆大小。您可以在命令窗口中键入首选项,然后在打开的窗口中选择General->Java堆内存。

凯文Phung

@Robyn Jackey—感谢您的快速回复!我目前使用的是windows 10 v1809上的R2018a。我想如果没有其他人经历过这种情况,这也不是什么大问题——我决定将该专栏保持为“可编辑”状态,以避免闪烁。

罗宾杜松子酒

@Kevin -你用的是哪个MATLAB版本?当我尝试你的代码时,我没有看到这个闪烁。我尝试将表延长10000倍,在我看来是可以的。

凯文Phung

嗨,Robyn,我已经注意到我认为是一个视觉错误,可以从这一小段代码中看到:

f =图;
t = uiw.widget.Table('Parent',f);
t.ColumnName = {'a', 'b'};
= num2cell (1:30) ';
B = num2cell(false(30,1));
t.Data = [a b];
t.ColumnFormat = {'integer','logical'};
t.ColumnEditable = [10];

当我尝试将列a中的数值更改为不同的值时:

t.Data{1,1} = some_different_number

虽然有一个逻辑复选框列是“不可编辑的”,但这个框似乎做了一个闪光,就好像它变成可编辑的,然后又回到不可编辑的瞬间。
如果我有更多的行,“闪烁”似乎发生得更频繁。当只有一行时,没有闪烁。如果我将值更改为它已经存在的值,也不会闪烁。
从功能上看,一切似乎都很好。只是从视觉上看有点烦人。如果你有什么见解请告诉我。

罗宾杜松子酒

请注意,从R2019b开始,使用基于java的小部件时会收到警告:

警告:JAVACOMPONENT将在未来的版本中删除。有关更多信息,请参阅mathworks.com上对Java和ActiveX用户的建议。

如果你喜欢,你可以在启动你的应用程序时禁用它:

> >警告(“关闭”、“MATLAB: ui: javacomponent: FunctionToBeRemoved”)

我目前正在为此制定未来的计划。

@Robert -我没有为标题高度提供一个属性,但是该表在onStyleChanged方法中操纵标题大小。你可以制作自己的mod来做这件事。最好的方法是子类化我的表并重写onStyleChanged来做你需要做的事情。

罗伯特·卡明

谢谢你的建议。我通过在set的末尾添加“obj.applyColumnFormats();”来修复它。ColumnName”方法。这使得无论在运行时有多少列,它都可以动态更新。
@Robyn -有没有办法增加列标题的高度-这样你就可以使用html在columnName中有多行:'< html >row1
row2

大卫

@Robyn我在Widgets Toolbox和Matlab 2019b中看到一个警告,声明JAVACOMPONENT将在未来的版本中删除。在未来的版本中还会继续支持工具箱吗?金宝app我看到这个警告表和CheckboxTree小部件。

大卫

@Robert我在Table小部件上运行了相同的情况,并追踪到创建小部件时没有为Data属性指定一些东西。这样做似乎会锁定ColumnEditable,这意味着您以后不能更改哪些列是可编辑的。我发现周围的工作是添加“'Data', cell.empty(0,table_width),…到构造函数(table_width在你的例子中为3,因为你的例子有3列)。

罗伯特·卡明

它看起来真的很好,但我认为我发现了一个bug,使用以下代码:

F =数字;
w = uiw.widget.Table(…
“父”,f,…
'ColumnName', {'A'},…
“标签”、“表:“……
‘LabelLocation’,‘前’,……
“LabelHeight”,18岁,……
“单位”、“规范化”,……
'Position',[0 0 1 1]);
w.Visible = 'on';
w.ColumnName = {'A','B','C'};
w.ColumnEditable = [1 1 1];
w.数据=魔术(3);

我只能编辑第一列,是否有一个方法,我错过了更新它,以便我可以编辑所有列?谢谢

罗宾杜松子酒

@Alban,这应该工作现在:
uiw.abstract.JavaControl.getJavaDPI ()

Alban du Puytison

@Robin,谢谢你的回答。我不知道。你知道我如何从Matlab中获得窗口显示缩放设置吗?

罗宾杜松子酒

@Alban -我以前没有遇到过这种情况,但我怀疑这是由于您的显示缩放设置。MATLAB根据显示缩放调整像素值的大小,而用于表控件的底层Java不这样做。我认为我在表控件设置底层Java列宽度时没有考虑到这一点。

Alban du Puytison

你好@Robyn,非常感谢这个工具箱。
我正在使用表格小部件。你如何解释表的宽度不等于列宽度的和?
如果我将Position(3)属性设置为列宽度的总和,那么它就太宽了。
提前谢谢你。

奥尔本

罗宾杜松子酒

@Ryan,抱歉耽搁了。还有什么问题要解决吗?也许您可以从windows命令提示符运行部署的应用程序来查看任何错误消息?如果仍然有问题,请从我的作者页面给我发电子邮件。

莱恩穆尔

@Robyn,我实际上已经复制和粘贴图像文件到相同的目录作为可执行文件。我知道它能找到它,因为如果我更改了映像文件名或移动了映像文件,它就会在我运行可执行文件时向我抛出一个错误消息。我在windows 10上,我尝试使用Matlab R2017a和R2019a编译。奇怪的是,当我在一个可以找到的位置运行图像文件的可执行文件时,它没有给我任何错误消息,但它确实在显示GUI之前不久播放windows错误声音。

暹罗Aumi

罗宾杜松子酒

@Ryan,你确定图片被包含和加载了吗?在部署独立应用程序时,有必要在Widgets Toolbox安装中手动包含“resource”文件夹。如果已经包含,您使用的是什么平台和MATLAB版本?您是否收到任何错误?

莱恩穆尔

罗宾,谢谢你的工具箱!我使用这个工具箱组合了一个漂亮的GUI,并使用matlab mcc独立编译器成功地编译了它。看起来很棒!

在Matlab上运行它是完美的,独立编译版本看起来和工作起来都很棒,除了工具栏按钮。按钮仍然按预期工作,但它们不会显示图像。图像文件仍然被正确定位,但它不会显示在按钮上。你知道发生了什么吗?再次感谢!

罗宾杜松子酒

新的小部件工具箱插件可用:体积可视化和注释小部件

体积可视化和注释小部件提供了用于处理体积图像切片和等值面的组件。
//www.tatmou.com/matlabcentral/fileexchange/72723-volume-visualization-and-annotation-widgets

罗宾杜松子酒

@Alain -我建议你使用表格方法setCellColor来改变背景颜色,如果可以满足你的需要。我对Java方法不太确定。我不再打算增强基于Java的表格,而是开始考虑Widgets Toolbox与基于web的ufige(其中Java不可用)的兼容性。如果可能的话,最好坚持使用可用的接口。

@Mohammad -你需要手动在Widgets Toolbox安装中包含资源文件夹。它包含Java .jar文件和各种图标,但是依赖分析可能不会自动找到它。同样的事情也适用于GUI布局工具箱,如果你正在使用它。

穆罕默德·易卜拉欣

你好,罗宾

非常感谢这个工具箱。我想在一个独立的应用程序中使用小部件,但它给了我以下错误:“错误使用javaObjectEDT
不能在Java类路径上找到com.mathworks.consulting.widgets.tree.TreeNode类
请问我该如何解决这个问题?

再次感谢

阿兰Barraud

你好,罗宾,
我目前正在使用表格小部件。我尝试自定义列字体和颜色使用java方法,例如:jtable=obj.JScrollPane.getViewport.getView
renderer = javax.swing.table.DefaultTableCellRenderer
getcolumn (k-1).setCellRenderer(渲染器)
(没有错误)没有效果!!有办法吗?
致以最亲切的问候
PS建议添加rowname以避免添加特定的列

宿州农村汉族

亲爱的罗宾,
如何用按钮更改列表中的默认图标?

罗宾杜松子酒

@Alain -在基于java的树周围可能有一个我无法控制的轻微缓冲区。您可以设置小部件的Label,然后它将为它提供额外的空间。我通常使用GUI布局工具箱来定位图中的小部件,并设置一些基于像素的填充和间距,以使内容看起来一致。

我不确定你提到的字体大小和字体粗细。你是说他们不改变标签的字体,还是不改变树内的字体?

阿兰Barraud

@Robyn我已经从你之前的版本“树控件…”更新了我的软件。两个问题,位置[0 0 11 1]只使用了大约98%的父高度?是要添加一些标题,如果是如何做到这一点?改变标签属性,字体大小…没有影响,因为以前?任何想法?有什么特别的方法吗?

阿兰Barraud

@Robyn非常感谢,我只在checkboxtree演示中搜索,这是我目前通过你的树java接口使用的特定情况。

罗宾杜松子酒

@Alain -请参阅demoTree。mlx的setIcon方法示例。

阿兰Barraud

又一份出色的工作。我目前使用你以前提交的关于树。为了比较结果,我尝试了小部件树。
我还没有找到如何添加图标?这可能吗?这个选项在实践中非常有用。

罗宾杜松子酒

@patta -是的,我得到了一些其他的反馈,要求将uiw.abstract.SessionManagement.addRecentSessionPath作为一个受保护的方法,这样它就可以被覆盖。如果您对会话管理有任何反馈,请直接通过我的作者页面与我联系。我计划在未来更好地记录SingleSessionApp和MultiSessionApp类。

patta

哦,我看到它在当前版本中是受保护的。对不起。

罗宾杜松子酒

@Suresh -我也收到了你的直接邮件,但我的回复被退回了。我不明白你的问题。

您当然可以在GUI中使用Widgets Toolbox组件。您需要像在演示示例中那样创建它们,并将小部件的父组件设置为图形、面板或GUI Layout Toolbox组件。例如:

>> f = figure;
>> vLayout = uix.VBox('Parent',f);
>> t = uiw.widget.Table('Parent',vLayout);
>> t.Data = magic(5);
>> fs = uiw.widget.FileSelector('Parent',vLayout);
> > vLayout。高度= [-1 25];

这是否回答了你的问题?

苏雷什BHANOTH

嗨,罗宾,你能说的过程,如何嵌入小部件工具箱到图形用户界面模型?

罗宾杜松子酒

@David,你可以为文本和不可编辑的列设置格式,并使用HTML设置字体颜色。

大卫•摩根

嗨,罗宾,它是可能暴露一个选项,以设置每个单元格的文本颜色独立在一个表,类似于setCellColor(obj,rIdx,cIdx,颜色)。
非常感谢,
戴夫

罗宾杜松子酒

@Vyshakh,设置SelectionMode和SelectionType为你想要的,如果你设置SelectedColumns或SelectedRows它应该调用一个内部方法scrollToSelection()。如果它不工作,请通过作者页面与我联系,你可以通过电子邮件给我一个简单的脚本来重现这个问题。

罗宾杜松子酒

@Kevin,我强烈建议你看看GUI布局工具箱,如果你正在以编程方式做你的GUI。它可以很容易地配置东西来调整你想要的大小。通常我使用固定的字体大小(10号或更大)构建应用程序。

Vyshakh光伏

如何以编程方式突出显示表格中的单元格或行?(uiw.widget.Table)
(如果要选择的行不在可见区域,表将自动滚动)

凯文Phung

Robyn,我在没有GUIDE或appdesigner的情况下以编程方式制作了一个GUI。我有我的图形对象的单位和FontUnits标准化,以便它调整大小,如果我的图形要调整大小。你的小部件工具箱非常有用,因为我用它来取代Matlab中的uitable。然而,无论表的大小是否增加/减少,表中数据的字体大小似乎保持不变。

罗宾杜松子酒

嗨,凯文,我从来没有真正使用FontUnits作为像素以外的任何东西。你选择标准化有什么特别的原因吗?FontUnits似乎在MATLAB中删除了用于web图形(ufigure)的控件,所以我建议为了未来的兼容性坚持使用像素。

凯文Phung

嗨,Robyn,关于您的Table小部件,尽管我已经将字体单位设置为标准化,但表中数据的字体大小似乎没有变化,即使表和我的图形的大小正在发生变化。我是否遗漏了某个属性?

Vyshakh光伏

罗宾杜松子酒

嗨Mohammad,你需要直接访问树对象来获得SelectedNodes属性。如果你的菜单项的回调是一个对象的方法,它知道树,它可以简单地看起来像这样:
uimenu(treeContextMenu,'Label','我的菜单项','Callback',@(h,e)myCallback(obj, e));
否则,你可以在回调函数中提供树作为附加参数:
uimenu(treeContextMenu,'Label','我的菜单项','Callback',@(h,e)myCallback(e, treeObj));

我想我无意中注释掉了当前版本树上的可编辑属性。该特性的行为(直接编辑节点文本)存在一些已知问题。在取消注释后,编辑和设置。在我的本地副本上的可编辑方法,它似乎只保留文本类型,如果我完成编辑后按下enter。如果我在树的其他地方单击,编辑就会丢失。我可以在下一个版本中重新启用可编辑的,但我不确定我是否能够改善这种行为,如果你点击关闭你正在编辑的节点。

嗨,罗马,
是的,我喜欢这个主意。我已经把它添加到我要做的增强列表中。

马修

最后,我可以在MATLAB中以表格的形式查看我的数据,非常好。

马修

你好,罗宾

伟大的工具箱。非常有用的
一个问题,我正在使用“树”,当我从菜单中选择时,我如何获得所选节点的名称和所选节点的父节点
同样,如果我把w.Editable改成true;我仍然无法通过双击该节点来更改名称

谢谢你!

默罕默德

你好,罗宾。

你能在ui .abstract中添加一个“LabelBackgroundColor”属性吗?BaseLabel”类?
如果你这样做,也请考虑删除"uiw.abstract.WidgetContainer/onStyleChanged"中的这一行:

107%也修改标签
108 obj.hLabel.BackgroundColor = obj.BackgroundColor;

我认为将主控件的背景颜色与其标签分开是有意义的。我特别注意到弹出式控件。

致以最亲切的问候
罗马

罗宾杜松子酒

@David -谢谢你,我已经为下一个版本做了这个改变。

大卫•摩根

@Robyn

请参阅下面的测试结果,第一个测试抛出警告,但第二个测试没有。我在跑步2018b。

>> dpi = java.awt.Toolkit.getDefaultToolkit().getScreenResolution()
警告:类“sun.awt.windows”的值。索引没有指定下标。目前的结果是
这个操作本身就是索引值,但是在将来的版本中,它将是一个错误。

dpi =

96

>> wToolkit = java.awt.Toolkit.getDefaultToolkit();
dpi = wToolkit.getScreenResolution()

dpi =

96

在一个单独的主题是有可能编辑一个uiw.widget.Table的单个单元格的字体颜色和字体重量?

罗宾杜松子酒

@David -我没有看到这个错误。您使用的是哪个MATLAB版本?

如果在命令行执行这个命令,会出错吗?
dpi = java.awt.Toolkit.getDefaultToolkit().getScreenResolution()

这个呢?
wToolkit = java.awt.Toolkit.getDefaultToolkit();
dpi = wToolkit.getScreenResolution();

大卫•摩根

你好,

这个工具箱看起来很有用,谢谢。当右键单击打开表上的上下文菜单时,我得到下面的警告,注意这可以通过执行表的示例代码来实现。现在看起来不会造成问题,但将来可能会造成问题。

非常感谢,
戴夫

警告:类“sun.awt.windows”的值。索引没有指定下标。目前,该操作的结果是索引值本身,但在未来
释放,它将是一个错误。
uiw.abstract中的>。showContextMenu(第181行)
在uiw.widget。表格/onMouseEvent (line 334)
在uiw.widget.Table > @ (h, e) onMouseEvent (obj h e)

@Andreas,不幸的是没有。但是,为了在这么多节点的情况下获得最快的性能,我建议您先创建顶部分支,但不要将它们添加到树中。然后先用node(idx) = uiw.widget.TreeNode('Name',thisNodeName,'Parent',branch)创建所有的节点,其中'Name'是第一个输入。然后在所有节点创建完成后,将分支父节点设置为树。

你好,
是否有一种方法可以同时创建多个树节点?例如:
节点(1:1000)= uiw.widget.TreeNode;
但在这种情况下,我创建了1000个引用到一个节点,因为TreeNode继承从句柄。
有什么办法吗?

@Kevin -是的,你可以使用html设置文本颜色,使用setCellColor方法设置单元格背景颜色(obj,rIdx,cIdx,color)

@亚当,我不知道。不过,这听起来像是一个有趣的用例。我完全同意在不修改选择的情况下扩展分支。之所以会发生这种情况,是因为树在单击不在节点上的空白时以编程方式取消了所有选择。我可以将此行为更改为在单击空白时不取消选择。我认为这不会有太大问题,因为您仍然可以按ctrl键单击一个节点来取消选择它。我正在测试这个,并计划很快提交这个更新。

@大卫,非常感谢你的反馈和修复这个问题。你的建议很好,我已经把它纳入了即将到来的版本。我们可以通过预分配一个元数组来避免动态调整大小。属性或像这样反向执行循环索引:for idx = numel(propNames):-1:1

凯文Phung

亚当

有没有办法使单个树节点不可选?我真正考虑的是那些具有可扩展分支的非叶节点,对于这些节点,父节点的选择对于我的目的是无效的。另外,是否有一种方法可以在分支扩展或折叠时保留现有的选择?目前,如果我做一些选择,然后展开一个分支,添加它的一个子选择,我必须重新选择一切。这不是什么大问题,我的用户很快就会习惯在选择之前必须扩展他们想要的分支。只是想知道我是否错过了当前可用的功能。

大卫

Robyn,我已经设法找到了一个工作,为我正在与Preferences类一起工作的两个部分,我将在下面包括它们供您参考。

*打开最近菜单的内容不通过关闭/重新打开应用程序:更改uiw.abstract.SessionManagement检查RecentSessionPath首选项的所有时间,以查看RecentSessionPaths,因此它总是在看相同的列表。(第214、413、422、499和517行)

在ui .model中编辑125-126行。Preferences,这可能不是一个理想的长期解决方案,因为现在propList在遍历属性列表时调整了大小,但metaclass()函数似乎没有获取addprop添加到Preferences实例的动态属性。
来自:
MC =元类(obj);
propList = mc.PropertyList;

:
propNames =属性(obj);
for i = 1:numel(propNames)
propList(i) = findprop(obj,propNames{i});% #好< AGROW >
结束

大卫

Robyn,我一直在寻找使用HasPreferences混合类附带的SingleSessionApp,我相信我已经注意到会话管理使用其首选项的方式有点不一致。看起来,当SessionManagement试图填充File > Open Recent菜单时,它有时会寻找首选项“RecentSessionPath”,有时会寻找“RecentSessionPaths”,因此它最终会得到两个大多数时候不匹配的列表。最终结果是最近的文件,打开最近的列表菜单,和额外的偏好,我试图定义并不总是持续关闭/重启应用程序之间。不知道这两个是直接相关的,我想我可能丢失如何添加首选项我定义返回的列表参数类的getPreferenceProperties函数,作为我现在的只有它返回位置,LastFolder, RecentSessionPaths。

罗宾杜松子酒

@Giuseppe -我正在寻找未来的兼容性,在应用程序设计师使用的web图形(uifigure)中使用小部件。Java组件(主要是树,表)不能在web图形中工作。我将研究是否可以将它们映射到web图形uitree和uitable中,因为它们正在积极开发中,并且每个版本都越来越接近小部件Tree和Table的特性。

朱塞佩Fidelibus

你好Robin,有什么计划让它与appdesigner兼容吗?我目前使用的是Matlab 2017b, appdesigner中的树只在Matlab 2018中介绍过……谢谢

罗宾杜松子酒

@Kevin -谢谢你的反馈!我来看看ButtonDownFcn。

凯文Phung

@Robyn,我认为可能有一个错误,其中ButtonDownFcn为您的表小部件连续执行3次

凯文Phung

嗨,罗宾,只是想说谢谢这个神奇的工具箱。正在寻找一个替代matlabs设计糟糕的实用程序,这就是它!目前对你的计划没有建设性的批评,只是想表达我的谢意。

罗宾杜松子酒

@ eddie - ZIP文件下载似乎被打破,因为它删除了包目录中的+和类目录中的@。现在,如果您需要手动安装,我建议您下载工具箱文件并将.mltbx扩展名重命名为.zip。进入fsroot文件夹,您将拥有所有正确的源文件/文件夹。如果手动安装,则需要手动将包含的Java JAR文件添加到Java路径。

@Markus -我会在下一轮更新中考虑这个问题。谢谢你的报道!

谢谢你的反馈。正如您所注意到的,我决定在参数/值对中要求区分大小写,尽管大多数内置的MATLAB组件接受小写或缩写名称。在我看来,我认为坚持使用确切的名称会使代码更具可读性和维护性。但是我会进一步考虑你的建议。

@Mohammed -太棒了!很高兴你能让它工作!

埃迪

我试图手动安装这个-但压缩文件中包含的类文件夹不是以'+'开头,而是以空白开始,因此matlab无法找到类。我需要手动批量重命名这些文件夹,以包括'+'符号吗?

马库斯

@Robyn:非常有用的工具箱。谢谢你!
我使用表类与UIcontexmenu,我想选择多行控制+鼠标左键单击。
在我看来,我在你的代码中发现了一个小错误。问题发生在表第328行类的函数“onMouseEvent”中。
不可能在上下文菜单自动打开的情况下选择多行。

我修改了328行,现在可以工作了。希望我能帮上忙

OLD(你的代码):
在某些情况下启动上下文菜单
如果比较字符串(mouseEvent.SelectionType,“alt”)

新(修复):
在某些情况下启动上下文菜单
if strcmp(mouseEvent. selectiontype,'alt') &&ControlOn ~ = 1

埃迪

希望看到对树结点重新排序的支持。金宝app现在我正在使用“非父母”和“重新父母”的技巧来解决这个问题。

埃迪

丹尼尔Kovari

伟大的工具箱!
也许只是我(有点懒),但如果“名称,值”语法接受小写参数名称,那就太好了。
例如:
> > uiw.widgets.Slider(“父”,gcf);
返回一个错误,while
> > uiw.widgets.Slider(“父”,gcf);
就可以了。

大多数原生MATLAB函数的行为忽略了参数名的大小写。

@Robyn
谢谢你的反馈。我自己在探索,并设法获得jTable的处理;如果你的表保存在变量“w”中,那么jTable = w. jcontrol。也许你的建议探索getJavaObjects将工作,太,但我得到了它的工作,所以我很高兴。不管怎样,还是要谢谢你的帮助

如果有人面临同样的问题,下面是我的代码:
将Yair Altman的自定义类“LookupFieldCellEditor”添加到java类路径中
javaaddpath(“LookupFieldCellEditor.zip”);

%创建一个Java哈希表来保存不同的列表
hashTable = java.util.Hashtable;

将每个列表添加到其相应的行值
我:1:rowCount
% rowValue:在我的例子中,它是每行第一列的值
% horizontalList:一个1乘n的单元格数组保存列表

将您的rowValue和horizontal list对添加到哈希表中
散列表。把(rowValue horizontalList);
结束

%创建自定义Java类的实例
%第一个参数。是哈希表
%第二个参数。单元格编辑器将在其中选择要显示的正确列表的列索引。(别忘了Java索引从0开始)
cellEditor = LookupFieldCellEditor(hashTable, 0);

jTable = w.JControl;
jColModel = javaMethodEDT('getColumnModel', jTable);

在我的例子中,我希望在第四列中显示不同的列表,所以这是我的目标列
targetCol = javaMethodEDT('getColumn', jColModel, 3);
%为目标列设置自定义单元格编辑器
javaMethodEDT('setCellEditor', targetCol, cellEditor);

罗宾杜松子酒

@Mohammed -谢谢你的反馈!我以前没有尝试过特定于行或单元格的列表。如果有帮助的话,你可以调用一个方法(我认为是getJavaObjects)来返回Java编辑器等等。如果需要,还可以子类化Table小部件以覆盖任何功能。抱歉,我没有更好的答案。我将在我的下一轮错误修复中看看颜色问题。

@Adam -是的,这很奇怪。我认为复选框树和普通树的渲染器是不同的。这里肯定有问题。正如你所说,这是一种利基市场,修复起来可能很复杂。我认为我不太可能深入挖掘来解决这个问题。很抱歉。

谢谢你的工具箱。对于Table小部件,我试图为每一行设置一个不同的列表,但我找不到方法。我通常通过获取jTable (from jscroll = findjobj(mTable);jTable = jscroll.getViewport.getView),然后使用Yair Altman的LookupFieldCellEditor为右列设置单元格编辑器。如果你能帮上忙,我会很感激的。

此外,我还注意到,当您在表中为颜色添加一列时,用户选择了新的颜色,新数据将保存在0-255的范围内,而不是标准化为0-1。在处理同一个表中的逻辑列时,当试图以编程方式将逻辑值设置为false ONLY时(将其设置为true不会导致问题),这会在某种程度上导致问题。该表将注意到新颜色的数字超出了Java的范围,导致Java异常

亚当

我也注意到奇怪的行为与CheckboxTree不存在的树。我正在使用一个html字符串,如:

sprintf('%s', name)

它适用于大多数节点,但有些节点在CheckboxTree上表现出奇怪的行为。特别是一个有子节点并且在其字符串中有空格的节点,它只会截断为第一个单词,但是如果我单击名称(不是复选框),全名就会出现,然后如果我第二次单击它,有时会再次消失,或者如果我展开节点,总是会消失。还有一些其他的甚至很短的字符串正在以一种看似任意的方式被视觉上剪辑。不过,对于常规树来说,一切都很正常。它也工作得很好,不使用html字符串,所以这是一个小众的bug,我只是想让我的字符串的一部分是不同的颜色。

我喜欢这个工具箱的整体外观。

罗宾杜松子酒

@Manuel -谢谢你的报道。我以前没有注意到这一点,但我有时间时会看一看。

Manuel小

你好,罗宾,
非常感谢你的投稿!真的有用!
我注意到CheckboxTree关于FontSize属性的一个奇怪的行为:一切都很好地与树(属性在对象和视觉上正确更新),然而与CheckboxTree对象正确更新,但字体的大小没有改变。真的有可能改变它吗?
谢谢

罗宾杜松子酒

@Roman -谢谢你的报道。这是无意的,我会尽快解决这个问题。请原谅我,因为年底很忙。

罗马Muller-Hainbach

当前版本与R2017a不兼容。它使用在R2017b中引入的isStringScalar。

穆罕默德Alabkari

罗宾杜松子酒

@Carsten -理想情况下,你应该保留每个树节点的句柄,并用你的数据层次结构跟踪它们。您还可以在节点的UserData属性中存储您喜欢的任何内容。

@Giuseppe—对于部署,您需要从Widgets工具箱安装目录中手动选择您提到的Java JAR文件。如果部署工具没有自动拾取图标文件,您可能还需要在GUI中手动包含正在使用的图标文件。

卡斯滕•里德尔

你好,罗宾,

谢谢你的工具箱!

我有一个非常简单的问题:我希望能够确定CheckboxTreeNode中复选框的状态,但由于节点没有“标签”,我无法找到它们!?我不想通过“Name”属性找到它们,因为这有时会发生变化。我还希望能够以编程方式检查和取消复选框-我如何才能实现这一点?

谢谢

朱塞佩Fidelibus

你好,罗宾

我开发了一个应用程序,它使用了你的工具箱,我把它打包发给了我的一个同事。他设法安装了它,但他得到了以下错误:

使用javaObjectEDT时出错
在Java类路径中不能找到任何类com.mathworks.consulting.widgets.tree.TreeNode

我通过编程方式在java类路径中添加“MathWorksConsultingWidgets.jar”文件来解决这个问题。这是解决问题的唯一办法吗?

谢谢

罗宾杜松子酒

Kiron -刚刚发布的新版本1.1.257应该会修复这个问题。

目睹了Mateti

嗨,罗宾,很棒的工具箱!我试图阻止在Table小部件中显示似乎是活动显示的鼠标事件。当操纵表格时,我得到“向上”,“向下”,“单击”的命令窗口输出。我可以访问的所有回调都是空的,所以我想知道它是否更深一层?谢谢!

罗宾杜松子酒

刚刚发布的1.0.245版本包含了一些小变化。请参阅本页底部的发布说明。一个包含重大错误修复、改进和额外功能的更大更新现在正在审查中。

罗宾杜松子酒

嗨,Dani -是的,很抱歉。发布版本1.1的审批过程已经将发布推迟了几个月。我预计还有几个星期。(临时发布1.0。X将在几天内到达,但变化很小。)

达尼

1.1发行版要花很长时间?

罗宾杜松子酒

嗨,泰勒,谢谢你告诉我。我在即将发布的版本中修复了它。

泰勒Cumby

嗨,罗宾,我刚刚注意到uiw。mixin。HasLabel的LabelFontWeight属性被定义为“double”而不是“char”。

罗宾杜松子酒

谢谢你,泰勒!

泰勒Cumby

我只是想表达我对Table和TableColumFormat的赞赏:你已经使它非常容易地结合我们自己的自定义表单元格编辑器和渲染器。谢谢!

罗宾杜松子酒

@Kai -“兼容任何版本”是个错误。我已经在1.1版本中修正了这个问题,目前正在通过提交审批流程。它确实需要R2017a,因为许多类使用属性验证器。该特性是一个非常有用的编程辅助工具,还允许自动转换到属性的数据类型,这使得使用属性更容易。也就是说,我理解一些用户因为其他原因而固守早期版本。你之前关于树控件的评论可能已经被这个覆盖了。我想继续下去,看看我是否能重现那个问题。你能PM我讨论这两个通过点击我的名字上面和点击“联系作者”吗?

Kai Lehmkuehler

此外,它在右边说要与任何Matlab版本兼容,但它需要2017a才能工作,这是一个非常有限的限制。

罗宾杜松子酒

@丽贝卡,我以前从未遇到过这种情况。您使用的是R2017a或更高版本吗?如果你还是有问题,请PM我(点击上面我的名字,然后点击我照片下面的联系按钮)

丽贝卡·威廉姆斯

嗨,罗宾,我们正在一台下载了.mtlbx文件的新计算机上测试工具箱,并得到以下错误,您有任何提示吗?

使用hgconvertunits时出错
输入不是有效的图形对象
getpixelposition错误
uiw.abstract错误。BaseContainer/getPixelSize(第78行)
Pos = getpixelposition(obj,false);
uiw.abstract错误。WidgetContainer/onContainerResized(第194行)
[wC,hC] = obj.getPixelSize();
ui .mix . haslabel错误(第77行)
obj.onContainerResized ();
uiw.abstract.WidgetContainer错误(第37行)
obj@uiw.mixin.HasLabel ();
uiw.widget.Toolstrip错误(第49行)
函数obj = Toolstrip(varargin)
demoToolstrip中的错误(第22行)
w = uiw.widget.Toolstrip(…

罗马Gorlov因此

丽贝卡·威廉姆斯

@Robyn,完美,谢谢!我现在将使用JControl,并等待下一个版本。

罗宾杜松子酒

@Rebecca -你可能想在表格本身设置一个键盘回调,而不是在图形上。即将发布的版本(目前在最终测试中)有这个功能。如果你马上需要它,你可以这样做:w.JControl.KeyPressedCallback = @(h,e)disp(e)。或者如果你PM我,我会给你一个预发布的版本。

丽贝卡·威廉姆斯

很好,谢谢罗宾!我还有一个问题:似乎单击一行会对窗口按键监听器做一些事情,这样当行/单元格突出显示时,任何按键的回调都不会被激活。我尝试在主图中添加一个“WindowKeyPress”监听器,这导致回调执行,但只有在单击表之后。我想做的是能够选择一行,点击删除,并激活一个删除该行的回调(我已经写了),但我不能让删除键按回调激活。你知道怎么绕过这个吗?

罗宾杜松子酒

@Rebecca -好主意!我想我可以添加一个新的属性来设置网格颜色。目前,这是没有记录的,但你可以这样做:
w.JControl。setGridColor (uiw.abstract.JavaControl。rgbToJavaColor([1 0 0]))

丽贝卡·威廉姆斯

是否有一种方法可以向表格单元格添加边框?现在,白色的单元格和非常接近白色的边界使所有单元格内容运行在一起,很难区分列,如示例中所示

大卫

罗宾杜松子酒

@David -我自己还不能复制它,但它可能有助于在一个额外的保护,以避免Java异常。如果将它插入到Table中的第448行之前。M,它只会在错误条件发生时返回

%重新验证行数和列数
if rIdx > obj.JTableModel.getRowCount() || cIdx > obj.JTableModel.getColumnCount()
返回
结束

如果有帮助,请告诉我。

罗宾杜松子酒

@大卫-我认为你做的每件事都是正确的。我有一个类似的报告,来自另一个用户关于一个类似的Java错误,我需要调查。我不知道是否会有不同,但你可以尝试设置“数据”属性而不是“数据表”。“Data”属性已经进行了更多的测试,而“DataTable”是为了方便而添加的,但它可能在底层做了更多的工作,因为它还设置了ColumnName。当我有更多发现时,我会回复的。如果你能可靠地重现这一过程,那么得到一个例子就太好了。你可以从作者页面PM我(点击上面我的名字)给我发电子邮件。

大卫

对于Table小部件,从表中删除一行的过程应该是什么?我已经创建了一个按钮uicontrol,它首先从小部件中读取SelectedRows,从作为数据源的Matlab表中删除该行,然后通过DataTable属性将现在缩短的表重新发送到小部件。尽管一切看起来都像预期的那样工作(从Table小部件中删除了所选的行,并且图形更新正确),但我在小部件的源文件第448行(onTableModelChanged函数)的命令窗口中获得了一个Java 'IndexOutOfBounds'异常。我不确定这是小部件的问题还是我的方法。

穆罕默德民兵

罗宾杜松子酒

@Giuseppe -我可能需要更多的信息来复制这个问题。你可以PM我并发送一些示例代码吗?

朱塞佩Fidelibus

当我用CheckboxTree....选择一个新框时,仍然没有找到一种方法来取消选中的复选框据我所知,还没有选择这样做,所以我试图自己....不过,我的印象是它有点不稳定

罗宾杜松子酒

@Marnoch -很高兴你喜欢小部件工具箱!您说得对,widget工具箱中的“树”目前不支持延迟加载节点。金宝app实际上,我对它的请求很少,但我将考虑在未来更新。

Marnoch Hamilton-Jones

这看起来像是一个非常有用的功能集,但我有一个问题。我正在开发一个应用程序,其中我们有潜在的非常多的节点和分支。我一直在使用贬值的uitree和相关函数,但希望切换到使用这个工具箱。我遇到的问题是,对我们来说,使用惰性节点或动态节点创建是非常有利的,这样直到其父节点被展开时才创建节点。我一直通过操作uitree节点的allowchilddren和isLeaf属性来实现这一点,但是在这个工具箱中包含的任何一种类型的树上都没有等效的isLeaf属性。这意味着在实际添加子节点之前,不会向用户显示用于展开节点的控件,从而防止使用延迟节点技术。有没有办法达到类似的效果?
谢谢

Jesper

达尼

谢谢你的安装说明。
还有一件事。如果在工具条中,部分的背景色和后面的对象可以分别控制,以使部分更加突出,这可能是有用的。

罗宾杜松子酒

@Dani -谢谢反馈!我看一下,再做些改进。

对于安装,我建议下载工具箱文件并以这种方式安装,这样可以处理所有问题。该方法还将\resource下的Java .jar文件添加到下一次启动的静态Java路径。如果您以zip格式下载,则需要将所有内容添加到MATLAB路径中,通过javaaddpath(动态Java路径)或javaclasspath.txt(静态Java路径-首选)添加一个.jar文件。

达尼

好了!我特别喜欢工具条。一些评论:

1.最好有一些安装说明(要添加哪些路径),这样就可以开箱运行演示了。我得到了几个演示
使用javaObjectEDT时出错

在Java类路径中不能找到任何类com.mathworks.consulting.widgets.tree.TreeNode
在Java类路径中不能找到任何类com.mathworks.consulting.widgets.table.TableModel

2.demoColorSelector给出一个错误,因为映射工具箱的roundn不可用。这将是很好的,如果这将运行没有特殊的工具箱函数。

3.在一些例子中,例如demoEditablePopup,对象不够高,弹出框周围的底线不显示。在我的系统是我必须使用'位置',[10 10 300 26]);而不是默认的25。如果可以查询对象应该有多大,那就太好了。弹出窗口和普通的编辑框通常表现不同,弹出窗口需要更高一点的高度。

4.什么是FixedText?

5.FolderSelector
最好有一个文件夹选择器,也显示个别文件夹的内容。我通常只有在看到其中包含的内容后才知道要使用哪个文件夹。

6.使对象不可聚焦?当人们点击demoPopup或demoSlider时,它们周围会有一个带钉钉的边缘。禁用吗?

安妮塔

MATLAB版本兼容性
使用R2017a创建
兼容R2017a及后续版本
平台的兼容性
窗户 macOS Linux
社区
更多文件在电力电子控制社区

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!

演示/ + demoAppPkg / +枚举

演示/ / @ datamodel + demoAppPkg / +模型

演示/ + / @App demoAppPkg / +视图

演示/ + / @BarChart demoAppPkg / +视图

演示/ + / @DisplayTable demoAppPkg / +视图

演示/ + / @PlotSelector demoAppPkg / +视图

演示/ + demoUiFigureApps

资源/ + uix

小部件

部件/ +校本/ +抽象

部件/ +校本/ +对话框

部件/ +校本/ +枚举

小部件/ +校本/ +事件

部件/ +校本/ + mixin

部件/ +校本/ +模型

小部件/ +校本/ +工具

部件/ + / @Logger校本/ +工具

部件/ +校本/ +实用程序

部件/ +校本/ +小部件